RecyclerView点击选中Item,加上背景,点击其他It
2018-07-11 本文已影响0人
耀东wang
解决思路如下,
记录两个位置,当前选中以及上次选中的Item的位置,并记录Item是否选中,那么在Adapter中我们只需要根据Item是否选中来设置它的背景色。
具体代码如下:
ListItem listItem = generateAdapter.getData().get(position);
//listItemTemp 上一个选中 listItem 当前选中
if (listItemTemp != null && lastIndex !=-1){
listItemTemp.setSelect(false);
generateAdapter.notifyItemChanged(lastIndex);
}
lastIndex = position;
listItem.setSelect(true);
generateAdapter.notifyItemChanged(position);
listItemTemp = listItem;
listItemTemp记录上一个选中,listItem是当前选中,lastIndex是上一个Item的坐标,position是当前选中Item的坐标。然后Adapter只更新相对应的坐标。
Adapter只更新只做了相对应改变的那一项,Adapter中的更新代码如下:
if (!listItem.isSelect()){
viewHolder.relativeLayout.setBackgroundColor(Color.WHITE);
}else {
viewHolder.relativeLayout.setBackgroundColor(Color.parseColor("#ff00ff"));
}
当然我们在这里将数据模型中增加了一个记录是否选中的方法:
public boolean isSelect() {
return select;
}
public void setSelect(boolean select) {
this.select = select;
}