ViewPager刷新当前View

版权声明: 本文来自Summer鱼简书,转载请注明出处。

项目需求里用到了一个功能,根据当前ViewPager显示的View拿到一个id,再用这个id去请求后台数据,后台数据会返回一个字段来判断当前View是否可用,不可用的话背景置灰,好吧,google去,找到了如下解决方案拿到当前View,如下:
1).在viewpager的setOnpageChange()的监听事件中,在onPageSelected()方法中,为当前view添加tag

mViewPager.setTag(currentItem);

2).通过viewpager的findViewWithTag()方法获取到

View view = mViewPager.findViewWithTag(mViewPager.getCurrentItem());

结果遇到的一个问题就是,拿到的View是滑动之前的View,滑动之后会出现当前View并没有变化,而是滑动之前的那个View发生变化,又换了个方案,在viewpager的adapter里面有一个方法可以获取到当前的view,如下:

private View mCurrentView;
                                            
    @Override
    public void setPrimaryItem(ViewGroup container, int position, Object object) {
        mCurrentView = (View)object;
    }
                                            
    public View getPrimaryItem() {
        return mCurrentView;
    }

还是出现了之前的问题,拿到的View不对;
尼玛,想起了ListView的adapter刷新数据的方法,尝试了一下,纳尼,不起作用!
于是又各种Google,找到了如下解决方案:

@Override
        public int getItemPosition(Object object) {
            return POSITION_NONE;
        }

重写adapter中的这个方法,改变数组里的相关数据,在mAdapter.notifyDataSetChanged();
试了一下,完美解决了,弊端大家都很容易看出来,就是我不需要刷新的项目也被重新加载了,浪费系统资源。在此Mark一下。

214539jwavzwc11rcgzkog.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,604评论 25 709
  • 作者:李旺成 时间:2016年5月3日 一、PagerAdapter介绍 先看效果图 PagerAdapter简介...
    diygreen阅读 83,142评论 38 309
  • 今天依然是抵抗情绪占上风。 下午才慢慢回归正常。 这样,碰到大事,都不知道褂几回了。 可能也和自己故意放任自己这样...
    duoduo_four阅读 149评论 0 1
  • 前几天,清华、北大医学学霸开烧烤店的一则新闻引起了很多人关于大学生创业的讨论。 有网友质疑说“学了这么多年就去干这...
    乐小善说故事阅读 505评论 0 0
  • 寒风瑟瑟听雪音, 长忆年少夜挑灯。 曾几故梦遇旧人, 相对无言不青春。
    Joeking阅读 123评论 0 0