项目中有个需求:当用户点击recyclerView中某个Item时,无论你怎么滑动控件列表,item的选中效果都不会发生改变和错位.如下图:
这个需求看似简单,一般都会这样写:
在item点击事件里直接设置被点击控件的背景颜色.这样做就会出现下面的结果:
因为view复用而导致的item背景错乱. 我的解决办法是在数据里添加一个标签, 当某个item被点击时改变标签的值, 然后刷新数据. 代码:
1, 写一个数据类:
2,在adapter中通过判断标签的值决定item的背景
3,在item的点击事件里完成标签的赋值
其实就是通过刷数据来控制控件的一些属性,类似的如果item中有checkbox,选中的checkbox也可能会出现选中效果错乱的情况,解决的方法同理.
最后Demo地址:https://github.com/jiapengtao/recyclerviewtest#recyclerviewtest点击打开链接