Android中Adapter的notifyDataSetInvalidated()和notifyDataSetChanged()的区别
来源:互联网 发布:windows内部运行机制 编辑:程序博客网 时间:2024/05/18 18:44
notifyDataSetChanged方法通过一个外部的方法控制如果适配器的内容改变时需要强制调用getView来刷新每个Item的内容。
public void notifyDataSetChanged ()
该方法内部实现了在每个观察者上面调用onChanged事件。每当发现数据集有改变的情况,或者读取到数据的新状态时,就会调用此方法。
public void notifyDataSetInvalidated ()
该方法内部实现了在每个观察者上面调用onInvalidated事件。每当发现数据集监控有改变的情况,比如该数据集不再有效,就会调用此方法。
今天用到Listview刷新功能,之前解决都是给Listview重新负上adapter这样listview就滚动到第一条了,但是这样会有些耗内存,程序写法也不美观。理论上是这样的,需要实验一下,重要的是一下两句话!
notifyDataSetInvalidated(),会重绘控件(还原到初始状态)选项会跳转到第一项
notifyDataSetChanged(),重绘当前可见区域,停留在当前选项
项目中不需要每次都刷新,所以采用notifyDataSetChanged()
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id){ systemSettingListView.setSelection(position); Fragment fragment = null; if (position == NET_SEETING) { fragment = new SystemSettingNetContentFragment();; } else if (position == ACCOUNT_SETTING) { fragment = new SystemSettingAccountContentFragment(); } else if (position == AUDIO_SETTING) { fragment = new SystemSettingAudioContentFragment(); } else if (position == VIDEO_SETTING) { fragment = new SystemSettingVideoContentFragment(); } else if (position == NET_UPDATE) { fragment = new SystemSettingUpdateContentFragment(); } else if (position == STATUS_FIND) { fragment = new SystemSettingStatusContentFragment(); } adapter.setSelectItem(position); adapter.notifyDataSetChanged(); getFragmentManager().beginTransaction() .replace(R.id.system_setting_right_fragment, fragment).commit(); }
阅读全文
0 0
- Android中Adapter的notifyDataSetInvalidated()和notifyDataSetChanged()的区别!
- Android中Adapter的notifyDataSetInvalidated()和notifyDataSetChanged()的区别!
- Android中Adapter的notifyDataSetInvalidated()和notifyDataSetChanged()的区别!
- Android中Adapter的notifyDataSetInvalidated()和notifyDataSetChanged()的区别
- Android中Adapter的notifyDataSetInvalidated()和notifyDataSetChanged()的区别!
- Android中Adapter的notifyDataSetInvalidated()和notifyDataSetChanged()的区别
- Android中notifyDataSetInvalidated()和notifyDataSetChanged()的区别
- adapter 的notifyDataSetInvalidated和notifyDataSetChanged
- adapter.notify()、notifyAll()、notifyDataSetChanged ()、notifyDataSetInvalidated ()的区别
- adapter.notify()、notifyAll()、notifyDataSetChanged ()、notifyDataSetInvalidated ()的区别
- notifyDataSetInvalidated()和notifyDataSetChanged()的区别!
- notifyDataSetInvalidated()和notifyDataSetChanged()的区别!
- notifyDataSetInvalidated()和notifyDataSetChanged()的区别!
- Android中notifyDataSetInvalidated()和notifyDataSetChanged()
- BaseAdapter 的notifyDataSetInvalidated 和notifyDataSetChanged
- Android中notifyDataSetInvalidated()和notifyDataSetChanged()有什么区别
- Android中notifyDataSetInvalidated()和notifyDataSetChanged()有什么区别
- Android中notifyDataSetInvalidated()和notifyDataSetChanged()有什么区别
- voronoi diagram
- 关于AJAX轮询简单代码
- CodeFroces 817A Treasure Hunt(构造题)
- rbd-mirror 技术内幕
- .json.JSONException: java.lang.NoSuchMethodException: bean.Equipmentplan.<init>()
- Android中Adapter的notifyDataSetInvalidated()和notifyDataSetChanged()的区别
- Android 重写系统Crash处理类,保存Crash信息到SD卡 和 完美退出程序的方法
- C语言中"."和"->"的区别
- 复盘_8月(第4周工作复盘)
- 重建二叉树
- Xcode 查看运行时ViewController结构
- Android 分享一个SharedPreferences的工具类,方便保存数据
- 神经网络学习笔记
- hdu 6158 The Designer 计算几何之圆反演 2017中国大学生程序设计竞赛