關於Adapter的notifyDataSetChanged無效
阿新 • • 發佈:2018-11-09
記錄
關於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的引用物件發生改變,無效