RecyclerView 點擊Item 改變背景色

項目中涉及到 RecyclerView item  的切換,需要改變選中的背景  ,本着不麻煩ui小姐姐的原則 自己實現

效果圖:

基本思路是這樣的:

在Fragment或者Activity中做個標記currentPosition
在點擊了Item的時候將position記錄下來,並刷新適配器
然後在Adapter中設置回調監聽,繼承的BaseQuickAdapter,在convert()方法中設置回調監聽
最後在Fragment或者Activity使用監聽判斷當前位置是否和傳入的position是否一致
一致就設置選中的背景,不一致就要修改Item中的背景

具體實現:

Fragment或者Activity中:

private int   currentPosition = 0;
 
mAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
                //這裏賦值
                currentPosition = position;
                //每點擊一次item就刷新適配器
                mAdapter.notifyDataSetChanged();

            }


        });

        mAdapter.setItemSelectedCallBack(new AmountInfoAdapter.ItemSelectedCallBack() {

            @Override
            public void convert(BaseViewHolder holder, int position) {

                //初始化組件
                ImageView bg = holder.getView(R.id.img_withdrawal_select);

                //判斷傳入的position是否和當前一致
                if (position == currentPosition) {
                    bg.setBackgroundResource(R.mipmap.icon_wytx_xuanzhong);

                } else {
                    bg.setBackgroundResource(R.drawable.profit_withdrawal_amount_shape);

                }

            }
        });

adapter中:

 @Override
    protected void convert(BaseViewHolder helper, AmountInfo item) {

        helper.setText(R.id.tv_withdrawal_amount, "¥" + item.getAmount());
        if (mCallBack != null) {
            mCallBack.convert(helper, helper.getLayoutPosition());
        }

    }


    public void setItemSelectedCallBack(ItemSelectedCallBack CallBack) {
        this.mCallBack = CallBack;
    }

    public interface ItemSelectedCallBack {
        void convert(BaseViewHolder holder, int position);
    }

總結: 同理可修改 文字顏色背景色等其他的設置  隨意發揮

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章