關於listview的adapter的一些思考

     最近一直在忙於開發工作,沒有時間去學習,把開發中的一些問題寫一下吧。

     幾天前遇到一個問題,就是如何讓listview每一項顯示不同的內容(佈局也不一樣)?一個簡單的方法是根據位置去判斷,寫很多的switch-case組合。但這樣豈不是很麻煩?。爲什麼這麼麻煩?問題是listadapter必須知道每個item的佈局細節,導致很麻煩。

    還有一個問題過去一直沒有想到,listview大多數時候適配的是抽象類itembean, 這個類完全跟視圖無關。可是有時候並不能完全這樣。比如圖標,你必須從item中知道圖標是什麼。難道要適配器去儲存圖標資源嗎?顯然不現實。

    就是說,適配的很多類,其實是和視圖有很大關係的。那視圖的佈局,到底是和item有關,還是和adapter有關呢?從邏輯上講,當然是和item有關了。就是說,item本身應該瞭解視圖的細節,但adapter知道不知道都可以。甚至從邏輯上講,是不應該知道的,因爲如果要建立在瞭解對象細節的基礎上,就無法實現不同item顯示不同佈局。

    所以我們不如這樣,將實例化視圖的任務交由item去處理。但這個item並不是完全抽象的itembean, 而是一個包裹類,他負責實例化視圖,知道每個item的細節,但同時實現了統一的接口。對於adapter來說,它並不直接適配itembean, 而是適配這個包裹類,這樣一來,利用動態綁定功能,實現不同位置顯示不同內容就手到擒來了。

    

    

    軟件設計中,誰應當瞭解細節是很重要的問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章