Android RecyclerView中使用CheckBox勾选实现单选功能

声明: 之前的文章写得有一些复杂,属于很早之前的文章了,最近看到,如果单选的话为啥还要用CheckBox呢

现在为你提供简单的代码,阅读即懂,复制即用:

Android 实现列表单选功能

(这是一个整个的项目, 可以下载下来,看这个类,有能力的小伙伴可以直接看以下代码逻辑,文章中基本上只是逻辑, 类似于伪代码)

  1. 创建适配器类, 重点关注这个selPos的变量, 使用它来记录当前单选的下标
    public class SingleChoiceListAdapter extends BaseRecyclerAdapter<ExampleListBean, RecyclerViewHolder> {
        /**
         * 定义选中的下标, 默认-1
         */
        private int selPos = -1;
    
        public void setSelPos(int selPos) {
            this.selPos = selPos;
        }
    
        public int getSelPos() {
            return selPos;
        }
    
        public SingleChoiceListAdapter(@Nullable List<ExampleListBean> data) {
            super(R.layout.item_single_choice, data);
        }
    
        @Override
        protected void convert(RecyclerViewHolder holder, ExampleListBean item) {
            //注册子View的点击事件,必须,否则在Act点击事件不生效
            holder.addOnClickListener(R.id.iv_select);
            ImageView ivSelect = holder.getImageView(R.id.iv_select);
            //因为在布局中定义了一个选中与非选中的drawable,select_list_item.xml
            //如果传进来的选中下标等于当前下标,就给设置选中状态
            ivSelect.setSelected(selPos == holder.getAdapterPosition());
        }
    }
  2. 在页面中写recyclerview的基本配置和绑定适配器
    private void initSingleChoiceRecycler() {
            LinearLayoutManager layoutManager = new LinearLayoutManager(this);
            rvSingleChoice.setLayoutManager(layoutManager);
            singleChoiceListAdapter = new SingleChoiceListAdapter(Collections.emptyList());
            rvSingleChoice.setAdapter(singleChoiceListAdapter);
        }
  3. 做适配器的点击监听,如果点击的是单选框的按钮, 就将当前点击的下标赋值给适配器的selPos, 代表当前选中的下标,然后刷新适配器, 刷新适配器会执行第1步的convert方法, 根据下标去展示不同的状态

    singleChoiceListAdapter.setOnItemChildClickListener((adapter, view, position) -> {
                if (view.getId() == R.id.iv_select) {
                    //点击按钮,将当前点击的下标传进去,刷新适配器
                    singleChoiceListAdapter.setSelPos(position);
                    singleChoiceListAdapter.notifyDataSetChanged();
                }
            });
  4. 看不懂的朋友, 可以直接去下载文章顶部链接的项目

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值