天天看點

繼承BaseAdapter自定義ListView

最關鍵的點就在于:Android ListView隻會建立并保持(在記憶體中)界面上會顯示的items,當發生滾動的時候,調用Adapter的getView方法來獲得新的view。這就是為什麼getView方法中的convertView參數有的時候是NULL,有的時候不是NULL的原因。為NULL的時候表示該item還沒建立過;如果一個界面最多能顯示9個item,那麼頂多也就建立9個item了,當某些item消失新的item要出現的時候,調用getView方法,此時convertView就是要消失掉的item,是以在getView方法中隻需要對這個convertView做一些修改就OK了。歸根結底,這樣的做法是為了節省記憶體。

測試代碼:​​/Files/super119/ListViewAdapter.zip​​

這個例子中ListView中每個item是由2個TextView和2個ImageButton構成的。沒有重載ListView的onItemClickListener,點選按鈕才有效。View有個很有用的方法setTag,可以用來存放自定義的對象。2個ImageButton就是通過通路parent view的存放在setTag中的自定義類來知道是哪一行的按鈕被點選了。