1. 程式人生 > >Android ListView區域性重新整理資料

Android ListView區域性重新整理資料

對於ListView、Gridview重新整理列表我們並不陌生,只需要在資料來源改變之後,呼叫BaseAdapter的notifyDataSetChanged方法,就可以重新整理列表了。但是,如果我們只改變了某一行item的資料,只需要重新整理單條item,也去呼叫notifyDataSetChanged方法,就顯得沒必要了,因為我們並不需要去重新整理其它的item。在這裡,我們需要一種方法,只重新整理單條資料,而不是重新整理整個列表。

Google向我們推薦了一種寫法,當需要改變某一行的資料時,只需要呼叫該行的getView()即可,程式碼如下:

public void notifyDataSetChanged
(ListView listView,int position){ int firstVisiblePosition = listView.getFirstVisiblePosition(); int lastVisiblePosition = listView.getLastVisiblePosition(); if(position >= firstVisiblePosition && position <= lastVisiblePosition){ View item = listView.getChildAt(position - firstVisiblePosition); getView(position,item,listView); } }

由於ListView是複用快取convertView的,所以converView的個數是螢幕上能顯示的條數那麼多,並且只重新整理螢幕當中我們可以看到的資料,看不到的就沒必要重新整理了。我們根據position拿到需要更新的那個item,呼叫一次getView,就實現了局部重新整理。