RecyclerView的Item复用出现问题导致排版混乱

在ListView中用setTag来解决Item的复用问题,但是RecyclerView中已经帮我们封装好了复用,如果在项目中出现了RecyclerView的复用性问题时.谈谈我碰到的那些坑.




1.问题描述和分析:

RecyclerView设置数据源时加入了if判断,导致item重用时没有进入if判断.继续复用原来设置的UI属性.

解决方案:

可以检查重写的onBindViewHolder中是否有if语句,如果有if语句后面一定要跟上相应的else判断处理





2.问题描述和分析:

RecyclerView的item具有checkbox,EditText控件并且监听了此类控件,多数购物车功能会遇到此类问题,导致此类问题也是因为item重用机制导致CheckBox,EditText复用时回调了监听方法.导致数据错乱


解决方案:

1:CheckBox解决方案:

在Adapter中创建List<boolean> isChecks列表属性,储存已勾选的item选中属性.在onBindViewHolder中根据isChecks的值处理选中状态,在监听回调中改变isChecks的值



2.EditText解决方案:

在处理购物车问题时,修改购物车商品数量时会调用接口.因此在item重用时也会进入回调.并且可能导致数据错乱.导致购物车商品比较多而且滑动时不停的调后台接口.我们可以设置EditText的焦点监听回调,根据当时EditText的焦点状态来判断是否调用接口

猜你喜欢

转载自blog.csdn.net/Stephen2Wong/article/details/64128874