RecyclerView用CheckBox实现单选
【摘要】 关键代码:
// 记录选中的Item private int selectedPosition = -1; @Override public void onBindViewHolder(@NonNull final ItemViewHolder holder, final int position) { holder.mTV.setText(list.get(pos...
关键代码:
// 记录选中的Item private int selectedPosition = -1; @Override public void onBindViewHolder(@NonNull final ItemViewHolder holder, final int position) { holder.mTV.setText(list.get(position).getName()); holder.mCB.setChecked(list.get(position).isChecked()); // 要实现单选的话,就要选择点击事件,然后在点击事件中根据选择状态做变化,不要选用setOnCheckedChangeListener() holder.mCB.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { holder.mCB.post(new Runnable() { @Override public void run() { if(selectedPosition != -1){ list.get(selectedPosition).setChecked(false); // notifyItemChanged必须在UI线程中执行,否则会报: // java.lang.IllegalStateException: Cannot call this method // while RecyclerView is computing a layout or scrolling notifyItemChanged(selectedPosition); } list.get(position).setChecked(holder.mCB.isChecked()); if(holder.mCB.isChecked()){ selectedPosition = position; }else{ selectedPosition = -1; } } }); } }); }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
对CheckBox的事件处理应该用OnClickListener,然后在点事件里处理CheckBox的选中逻辑。
文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_40763897/article/details/107888648
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)