Android 學習筆記(八):ListView

ListView簡單的填充數據

ListView相當於一個容器,裏面的所有的數據類型一致,通過將ListView綁定一個Adapter,Adapter可以自己創建,要實現BaseAdapter接口,重寫相應的方法,然後在Adapter中的getView方法()獲取到視圖。
進行佈局填充時先要創建一個佈局填充器LayoutInflater,可以通過Content.getSystemService(Context.LAYOUT_INFLATER_SERVICE)獲取。
然後通過LayoutInflater的inflater()方法獲取佈局從而填充ListView。

ListView中每個數據設置點擊事件和長按事件

通過ListView.setOnItemClickListener(Adapter.OnItemClickListener listener)方法給每個數據添加點擊事件。
通過ListView.setOnItemLongClickListener(Adapter.OnItemLongClickListener listener)方法給每個數據添加長按事件。

ListView中數據發生了修改

數據在Adapter中修改後,顯式的調用notifyDataSetChanged()方法,如果需要得到ListView更新的通知,首先實現一個DataSetObserver類,重寫其中的onChanged回調方法,然後把這個對象添加(註冊)到ArrayList中,這樣當我們調用notifyDataSetChanged的時候,它會遍歷這個ArrayList取出DataSetObserver對象,回調onChanged方法。也就是說我們最終的刷新ListViewd的工作應該在這個onChanged方法中。

那麼疑問就是系統在哪個地方實現了實現一個DataSetObserver類,重寫其中的onChanged回調方法,然後把這個對象添加到ArrayList當中的。

其實這個工作在setAdapter中完成的,當爲ListView設置一個Adapter的時候,就在這個Adapter中註冊了一個回調監聽,也就是上面說的實現一個DataSetObserver類,重寫其中的onChanged回調方法,然後把這個對象添加到ArrayList當中,當Adapter調用notifyDataSetChanged的時候,就會回調onChanged函數,在onChanged裏面進行ListView的更新,這樣ListView就進行更新操作。

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