RecyclerView之选择条目状态的改变

两种方式:
方式一:针对简单数据类型,且数据量较少的RecyclerView
缺点:全局刷新RecyclerView,所以数据量较少可以使用。
在该Adapter中,使用下标法:
xxxActivity/xxxFragment


        xxxAdapter.setOnItemClickListener(new BaseAdapter.OnRecyclerViewItemClickListener() {
            @Override
            public void onItemClick(View v, int position) {
                xxxAdapter.setSelectTitleIndex(position);
            }
        });

xxxAdapter.java

   public void setSelectTitleIndex(int position) {
        selectTitleIndex = position;
        notifyDataSetChanged();
    }

    @Override
    public void onBindViewHolder(BaseViewHolder holder, int position) {
        super.onBindViewHolder(holder, position);
        if (position == selectTitleIndex) {
            holder.itemView.setSelected(true);
        }else {
            holder.itemView.setSelected(false);
        }
    }

方式二:针对复杂数据,且数据量较大,不能全局刷新

  xxxAdapter.setOnItemClickListener(new BaseAdapter.OnRecyclerViewItemClickListener() {
            @Override
            public void onItemClick(View v, int position) {
    				xxxAdapter.DefViewHolder viewHolder = (xxxAdapter.DefViewHolder) 
 					xxxRl.findViewHolderForLayoutPosition(position);
 					viewHolder.itemData.setSelected(false);
				 }

注意:这里的itemData需要添加一个boolean isSelected属性值。
当adapter中的onBindViewHolder时,重新调用setData(),则会重新绘制之前的item,则会改变状态。

ps:这里的Adapter是基于BaseAdapter的属性,可见BaseAdapter去继承。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值