在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的焦点状态来判断是否调用接口