关于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的引用对象发生改变,无效

猜你喜欢

转载自blog.csdn.net/qq_25079615/article/details/81483455