RecycleView多次刷新或动态切换视图后,item位置发生偏移问题

许久没有做手机端APP了,许多控件功能特性和使用方式生疏了。近期在开发过程中遇到两个类似问题,这里记录一下。

1.RecycleView嵌套RecycleView,采用GridLayoutManager时,没多刷新一次,item位置都会发生偏移,间距越来越大。

2.RecycleView动态切换列表视图时,LinearLayoutManager 和 GridLayoutManager动态来回切换,item间距错乱

原因分析:

1.列表嵌套时,在主Adapter中给每个子列表设置GridLayoutManger间距addItemDecoration都是添加一个新的,就会跟之前设置的形成叠加,没刷新一次就会叠加一次,就会出现间距越来越大。

2.从GridLayoutManager切换成LinearLayoutManager时,会保留GridLayoutManager设置的addItemDecoration间距。所以会出现item发生偏移情况。

解决方法:

每次设置item间距或切换视图时,先移除之前设置的间距。

imageVideoHolder.rvSubList.setLayoutManager(new GridLayoutManager(mContext, 4));
//移除之前设置的间距
imageVideoHolder.rvSubList.removeItemDecoration(gridSpacingItemDecoration);
imageVideoHolder.rvSubList.addItemDecoration(gridSpacingItemDecoration);
 if(viewType == 0) {
            myViewBinding.rvFile.setLayoutManager(linearLayoutManager);
            //移除之前设置的间距
            myViewBinding.rvFile.removeItemDecoration(gridSpacingItemDecoration);
        }else {
            myViewBinding.rvFile.setLayoutManager(gridLayoutManager);
            //移除之前设置的间距
            myViewBinding.rvFile.removeItemDecoration(gridSpacingItemDecoration);
            myViewBinding.rvFile.addItemDecoration(gridSpacingItemDecoration);
        }

        mAdapter = new FileListAdapter(getContext(), new ArrayList<>());
        mAdapter.setViewType(viewType);
        mAdapter.setOnItemClickListener(myItemClickListener);
        myViewBinding.rvFile.setAdapter(mAdapter);
        mAdapter.refrsh(fileList);

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值