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;
    }
上一篇下一篇

猜你喜欢

热点阅读