关于Fragment的点击切换数据滞留问题

关于Fragment的点击切换数据滞留问题

场景再现:当我使用tabLayout + Fragment 切换不同的fragment时,出现了数据重复显示的问题;

思考逻辑:

  • 每次切换fragment都会重新获取数据,但是list集合是全局的,多切换两次,list数据就会变多,所以需要加判断,当list集合的数据超过第一次获取下来list集合的数据的时候就clear,之后每次进入fragment的时候initView都会执行,所以也会请求数据,这时候我们添加一个boolean来判断;

解决方案:

            if (isFirstHidden) {
                size = complaintList.size();
                isFirstHidden = false;
            }
            if (complaintList.size() > size) {
                complaintList.clear();
            }
            showRv();
        }
  • 这样写每次重新进去之后又不显示数据了
  1. 定义变量 private boolean hidden;
  2. this.hidden = hidden;
  3. 实现OnResume()方法重新获取数据;
    public void onHiddenChanged(boolean hidden) {
        super.onHiddenChanged(hidden);
        this.hidden = hidden;
        if (!hidden) {
            if (isFirstHidden) {
                size = complaintList.size();
                isFirstHidden = false;
            }
            if (complaintList.size() > size) {
                complaintList.clear();
            }
            showRv();
        }
    }

    @Override
    public void onResume() {
        super.onResume();
        if (!hidden) {
           showRv();
        }
    }

大功告成;

发布了81 篇原创文章 · 获赞 34 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41914317/article/details/105558963