美文网首页
ViewPager刷新当前View

ViewPager刷新当前View

作者: Summer鱼 | 来源:发表于2017-05-05 14:06 被阅读0次

版权声明: 本文来自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

相关文章

网友评论

      本文标题:ViewPager刷新当前View

      本文链接:https://www.haomeiwen.com/subject/egajtxtx.html