Google在Android 3.0SDK中推出的ViewPager控件很大程度上满足了开发者开发页面左右移动切换的功能,使用非常方便,参见:http://jameszhao84.iteye.com/blog/1344584。但是使用中发现,在删除或者修改数据的时候,PagerAdapter无法像BaseAdapter那样仅通过notifyDataSetChanged方法通知刷新View。
最基本的方法:
针对于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进行更新即可。
分享到:
相关推荐
viewpager + PagerAdapter刷新数据
ViewPager中使用FragmentPagerAdapter.notifyDataSetChanged无法更新当前Fragment解决方案
主要介绍了Android应用中使用ViewPager实现类似QQ的界面切换效果的示例,文中的例子重写了PagerAdapter,并且讲解了如何解决Android下ViewPager和PagerAdapter中调用notifyDataSetChanged失效的问题,需要的朋友可以...
ViewPager使用中notifyDataSetChanged无法更新问题解决
主要介绍了详解Android App中ViewPager使用PagerAdapter的方法,同时附带了一个ViewPager的PagerAdapter不能更新数据的问题解决方法,需要的朋友可以参考下
Android listview viewpager 滑动 跳动 冲突解决 ListView中嵌套ViewPage有或者滑动手势冲突解决 blog 地址 : http://blog.csdn.net/aaawqqq/article/details/43824631
Android利用ViewPager实现类微信的左右滑动效果,详细代码注解解析setOnPageChangeListener各参数意义以及使用方法
下面就给大家介绍下Android中ViewPager获取当前显示的Fragment的方法,一起看看吧。 一、使用 getSupportFragmentManager().findFragmentByTag()方法 Viewpager + FragmentPagerAdapter 情况下 才好使; ...
主要为大家详细介绍了Android使用ViewPager加载图片和轮播视频,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
获取ViewPager 与 ScrollView 冲突事件的解决
自己写的解决viewpager和scrollview的冲突问题,需要的可以下载
Android ViewPager切换的七种动画,分别是:深入浅出,立方体,旋转,左右折叠,右上角进入,右下角进入和淡入淡出。
salvage, 通用视图回收程序和 ViewPager PagerAdapter实现 Salvage通用视图回收程序和 ViewPager PagerAdapter实现。仍在实验阶段和实用性评估阶段。 许可证Copyright 2013 Jake WhartonCopyright 2006 The An
并实例利用ViewPager,PagerAdapter和OnPageChangeListener实现圆点导航左右滑动效果,并实现了被滑动界面处理控件事件,同时通过Fragment实现两个页面切换效果
主要介绍了Android 中解决Viewpage调用notifyDataSetChanged()时界面无刷新的问题的相关资料,这里提供相应的解决办法,需要的朋友可以参考下
android 自定义RecyClerView与ViewPager事件冲突解决方法。自定义RecyClerView和自定义ViewPager,重写了onInterceptTouchEvent和dispatchTouchEvent方法,实现自定义RecyClerView列表上下滑动,同时也可以自定义...
Android重写HorizontalScrollView仿ViewPager效果
android scrollview viewpager 冲突
Android实现ViewPager中item之间的数据通信