RecyclerView实现单选

现在大多数的app里面都有单项选择的功能,之前自己也做过,只不过现在用的时候又忘记了。。所以现在自己记录一下,下次忘记也好查看

布局是这样的;


而ChexkBox里面的android:enabled="false",是为了不让点击,只让点击整个item来改变box的状态。

第一步:先new一个list对象,里面只存放唯一一个被选择的checkbox的下标:

第二步:在apdater里面的onBindViewHolder里面首先判断一下集合里面存的数值是不是当前的item,是的话就让显示选择,

这样做是为了当你选择第一个之后,在点击第二个item的时候,第一个还是被选择的状态,下面会说到


第三步最关键的一步:在item点击事件中先判断当前点击的item的下标在不在集合里面,如果在就把当前的item设置不可点击,因为是单选所以只让点击其他item来取消当前item。如果不在集合里面就把当前的集合清空,然后把当前的下标添加进去,当前的box设为已选择状态,这样当选择一个item就先清空在添加,保持了集合里面只有一个item,最后在点击事件中更新adapter。


这样第二步的判断就有了效果,每次点击都会清空集合,然后更新,始终保持一个单选

ok结束,下次在忘记就好找了。。。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
以下是在RecyclerView实现单选的示例代码: 1. 首先,在RecyclerView的Adapter中添加一个成员变量来保存当前选中的位置: ```java private int mSelectedPosition = -1; ``` 2. 在ViewHolder的构造函数中设置itemView的点击事件,用于处理单选逻辑: ```java public MyViewHolder(View itemView) { super(itemView); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 获取当前点击的位置 int position = getAdapterPosition(); // 如果当前位置已经选中,则不做处理 if (position == mSelectedPosition) { return; } // 取消上一个选中的状态 notifyItemChanged(mSelectedPosition); // 设置新的选中状态 mSelectedPosition = position; notifyItemChanged(mSelectedPosition); } }); } ``` 3. 在Adapter的onBindViewHolder方法中根据当前位置是否选中来设置itemView的状态: ```java @Override public void onBindViewHolder(MyViewHolder holder, int position) { // 设置itemView的状态 if (position == mSelectedPosition) { holder.itemView.setSelected(true); } else { holder.itemView.setSelected(false); } // 其他操作 } ``` 注意:在itemView的布局文件中需要将android:background属性设置为可选中状态,例如: ```xml <LinearLayout android:id="@+id/item_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/selectableItemBackground" android:orientation="vertical"> <!-- 其他控件 --> </LinearLayout> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值