ViewPager刷新无效

最近在开发中,发现ViewPager里集成Fragment,但是执行notifyDataSetChanged之后无刷新,在不同位置的日志表明,数据没有出现问题,于是便怀疑问题是出在控件本身,或者使用问题。

一番查找,发现在pager刷新的时候并没有清除的原来的视图,也没有更新,一番查找之后发现

public int getItemPosition(Object object) {
    return POSITION_NONE;
}
可以使用这种方式进行解决,但是其原理是清除所有View重新进行加载,效率较低

可以在实例化每一条item的时候设置setTag(); 设置一个tag

之后再更新的时候使用findViewWithTag来查找你要更新的视图,不要用findViewById因为ById会遍历你所有的id节点,效率非常之低,通过观察AS monitors窗口,你会发现每次执行findViewById的时候,cpu的使用会激增(控件id多的情况下),所以不建议用这种方式,tag可以用这一条item数据中的唯一标识,例如ID等。


学习记录,顺便分享,希望能帮助小白们,附上原文链接,英语好的可以看看

https://stackoverflow.com/questions/7263291/viewpager-pageradapter-not-updating-the-view/8024557#8024557

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值