1. 程式人生 > >關於Adapter的notifyDataSetChanged無效

關於Adapter的notifyDataSetChanged無效

記錄

關於Adapter notifydatasetChanged失效總結有一下三點:

1、資料來源沒有更新,呼叫notifyDataSetChanged無效。

2、資料來源更新了,但是它指向新的引用,呼叫notifyDataSetChanged無效。(大多數情況下是該情況)

3、資料來源更新了,但是adpter沒有收到訊息通知,無法動態更新列表。

 

基於第二點解釋下:在new adapter物件時候,所給的集合型別物件的引用發生了改變,比如說:

List<Person> persons=new ArrayList();
Person person1=new Person();
Person person2=new Person();
Person person3=new Person();
persons.add(person1);
persons.add(person2);
persons.add(person3);
PersonAdapter adapter=new PersonAdapter(persons);
persons.clear();
persons.add(person2);
persons.add(person3);
adapter.notifyDataSetChanged();//這時候persons的引用物件沒有發生改變,有效
List<Person> otherPersons=new ArrayList();
otherPersons.add(person2);
otherPersons.add(person3);
persons=otherPersons;
adapter.notifyDataSetChanged();//這時候persons的引用物件發生改變,無效