Android-ViewPager中调用notifyDataSetChanged失效问题--setItemPosition--POSITION_NONE
2016-04-02 20:17
411 查看
最基本的方法:
针对于child view比较简单的情况(例如仅有TextView、ImageView等,没有ListView等展示数据的情况),可以在自己的Adapter中加入代码:@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
这样既可达到一般情况下要求的效果。
存在的问题:
这不是PagerAdapter中的Bug,通常情况下,调用 notifyDataSetChanged方法会让ViewPager通过Adapter的getItemPosition方法查询一遍所有child view,这种情况下,所有child view位置均为POSITION_NONE,表示所有的child view都不存在,ViewPager会调用destroyItem方法销毁,并且重新生成,加大系统开销,并在一些复杂情况下导致逻辑问题。特别是对于 只是希望更新child view内容的时候,造成了完全不必要的开销。更有效地方法:
更为靠谱的方法是因地制宜,根据自己的需求来实现notifyDataSetChanged的功能,比如,在仅需要对某个View内容进行更新时,在instantiateItem()时,用View.setTag方法加入标志,在需要更新信息时,通过findViewWithTag的方法找到对应的View进行更新即可。相关文章推荐
- Android ndk使用介绍
- 关于 android基础知识点整理
- android:interpolator
- VideoView无法播放此视频 android问题
- Android SQLite调试
- Android Material Design 兼容库的使用详解
- Android ExpandableListView 进行二级扩展 (BaseExpandableListAdapter)
- android_handler(三)
- android的 deeplink与服务路由的思考
- Android开发:GPU过度绘制的优化
- android重新启动应用程序和重新启动系统
- android利用zbar二维码扫描-(解决中文乱码及扫描区域定义)
- Android客户端性能优化(魅族资深工程师毫无保留奉献)
- Android Activity经常被自动回收
- Android获取内存(RAM)大小信息
- Android Scroller使用详解
- Android 自定义Listview 如何绑定Sqlite数据库数据
- Android开发:解决android:gravity不能居中问题
- Android开发中的一个小功能 清空搜索框的文字
- Android开发:setAlpha()方法