当前位置: 首页> 教育> 锐评 > 免费素材哪里找_河南新站关键词排名优化外包_深圳最好seo_新东方厨师学费价目表

免费素材哪里找_河南新站关键词排名优化外包_深圳最好seo_新东方厨师学费价目表

时间:2025/7/10 15:31:53来源:https://blog.csdn.net/qq_35584878/article/details/143366646 浏览次数:0次
免费素材哪里找_河南新站关键词排名优化外包_深圳最好seo_新东方厨师学费价目表

问题:

动态改变itemList之后,调用notifyDataSetChanged();没有作用。

原因:

原因是PagerAdapter内部的getItemPosition方法获取的值是固定POSITION_UNCHANGED,表示未改变,所以不更新。

解决:

要更新则重写这个方法,返回POSITION_NONE。那么调用notifyDataSetChanged()方法每个界面都会更新。如果是动态添加移除最后一页,那么前面所有item是不需要更新的,就会造成资源浪费。这里我是动态添加移除第一页,其他每页都会前移一页,所以每项item都是有改变的,所以需要所有都更新,我这边就直接返回POSITION_NONE了。如需求不同可根据getItemPosition方法传进来的object参数(实际上就是itemList里面的view)判断是否需要更新来返回不同值。

完整参考代码:

public class MyAdapter extends PagerAdapter {private final List<View> itemList;public MyAdapter(List<View> list) {this.itemList = list;}public void addToFirst(View view) {if (itemList != null && !itemList.isEmpty()) {View currentView = itemList.get(0);if (currentView != null && currentView == view) {return;}itemList.add(0, view);notifyDataSetChanged();}}public boolean isFirstView(View view) {if (itemList != null && !itemList.isEmpty()) {return itemList.get(0) == view;}return false;}public void removeFirstItem() {if (itemList != null && !itemList.isEmpty()) {itemList.remove(0);notifyDataSetChanged();}}@Overridepublic int getCount() {return itemList.size();}@NonNull@Overridepublic Object instantiateItem(@NonNull ViewGroup container, int position) {View view = itemList.get(position);container.addView(itemList.get(position));return view;}@Overridepublic int getItemPosition(@NonNull Object object) {return POSITION_NONE;}@Overridepublic void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {if (object instanceof View){container.removeView((View) object);}}@Overridepublic boolean isViewFromObject(@NonNull View view, @NonNull Object o) {return view == o;}}

关键字:免费素材哪里找_河南新站关键词排名优化外包_深圳最好seo_新东方厨师学费价目表

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: