关于ListView中adapter调用notifyDataSetChanged无效的原因
2014-08-05 23:30
363 查看
notifyDataSetChanged无效一般有以下几个原因:
1、数据源没有更新,调用notifyDataSetChanged无效。
2、数据源更新了,但是它指向新的引用,调用notifyDataSetChanged无效。
3、数据源更新了,但是adpter没有收到消息通知,无法动态更新列表。
对于问题2,假如数据源是 List<UserInfo> infos = new ArrayList<UserInfo>();
那在引用的时候不能重新
infos = new ArrayList<UserInfo>();
来给infos重新添加数据,因为这样的话就指向新的引用了,可以先infos.clean();
infos.addall();
然后再通知adapter.notifyDataSetChanged();或者用
List<UserInfo> infosinfos2 = new ArrayList<UserInfo>();
infos
= infos2 ;进行赋值,总而言之adapter观察者监听的是数据源的数据变化,数据源更新,adapter才调用getview方法刷新UI;
在此附上notifyDataSetInvalidated()和notifyDataSetChanged()的区别
notifyDataSetChanged方法通过一个外部的方法控制如果适配器的内容改变时需要强制调用getView来刷新每个Item的内容。
public void notifyDataSetChanged ()
该方法内部实现了在每个观察者上面调用onChanged事件。每当发现数据集有改变的情况,或者读取到数据的新状态时,就会调用此方法。
public void notifyDataSetInvalidated ()
该方法内部实现了在每个观察者上面调用onInvalidated事件。每当发现数据集监控有改变的情况,比如该数据集不再有效,就会调用此方法。
notifyDataSetInvalidated(),会重绘控件(还原到初始状态)
notifyDataSetChanged(),重绘当前可见区域
1、数据源没有更新,调用notifyDataSetChanged无效。
2、数据源更新了,但是它指向新的引用,调用notifyDataSetChanged无效。
3、数据源更新了,但是adpter没有收到消息通知,无法动态更新列表。
对于问题2,假如数据源是 List<UserInfo> infos = new ArrayList<UserInfo>();
那在引用的时候不能重新
infos = new ArrayList<UserInfo>();
来给infos重新添加数据,因为这样的话就指向新的引用了,可以先infos.clean();
infos.addall();
然后再通知adapter.notifyDataSetChanged();或者用
List<UserInfo> infosinfos2 = new ArrayList<UserInfo>();
infos
= infos2 ;进行赋值,总而言之adapter观察者监听的是数据源的数据变化,数据源更新,adapter才调用getview方法刷新UI;
在此附上notifyDataSetInvalidated()和notifyDataSetChanged()的区别
notifyDataSetChanged方法通过一个外部的方法控制如果适配器的内容改变时需要强制调用getView来刷新每个Item的内容。
public void notifyDataSetChanged ()
该方法内部实现了在每个观察者上面调用onChanged事件。每当发现数据集有改变的情况,或者读取到数据的新状态时,就会调用此方法。
public void notifyDataSetInvalidated ()
该方法内部实现了在每个观察者上面调用onInvalidated事件。每当发现数据集监控有改变的情况,比如该数据集不再有效,就会调用此方法。
notifyDataSetInvalidated(),会重绘控件(还原到初始状态)
notifyDataSetChanged(),重绘当前可见区域
相关文章推荐
- Android记录15--关于ListView中adapter调用notifyDataSetChanged无效的原因
- Android 关于ListView中adapter调用notifyDataSetChanged无效的原因
- 关于ListView的Adapter在调用notifyDataSetChanged()方法无效的原因
- 关于ListView中adapter调用notifyDataSetChanged无效的原因
- Android记录15--关于ListView中adapter调用notifyDataSetChanged无效的原因
- Android开发之关于ListView中adapter调用notifyDataSetChanged无效的原因
- 关于ListView中adapter调用notifyDataSetChanged失效的原因总结(转改)
- 关于ListView中adapter调用notifyDataSetChanged失效的原因总结
- 关于ListView中adapter调用notifyDataSetChanged失效的原因总结
- ListView中adapter调用notifyDataSetChanged无效的原因
- 关于ListView中adapter调用notifyDataSetChanged失效的原因总结
- [Android初级]关于Adapter使用notifyDataSetChanged无效的原因和解决方案
- 关于重写的listview adapter中,在getView()方法中,打印语句时,相同的position打印了多次,重复调用问题
- Grails 开发Web系统:关于在gsp页面中调用CSS无效原因.
- 解决listview中数据变化是调用Adapter的notifyDataSetChanged方法无效
- Android中adapter调用notifyDataSetChanged无效原因总结
- 解决adapter.getView()方法多次被调用,导致listView卡顿的原因。
- .Net数据库开发,关于adapter.update()无效的原因及解决办法
- 关于Android中Adapter调用notifyDataSetChanged方法无效解析
- adapter调用notifyDataSetChanged 无效的原因