解放双手的列表[单选]、[多选]库——CheckHelper v1.1

为解决项目中频繁出现的列表单选、多选需求,本文介绍了一款开源库,该库能有效减少重复代码,提升开发效率。库特点包括简单易用、低耦合、无需修改Bean字段等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 瞎扯淡

你还在为列表[单选]、[多选]写重复的逻辑吗

项目中经常性会碰到列表的单选、多选,实现起来好像也不难,但是最近项目有好多个需要单选/多选的页面,看到设计稿的一瞬间,脑子灵光一闪,为啥不把这些简单而又繁琐的逻辑给封装起来呢(懒癌发作)?

于是就有了下面的小东西(开源库)...

二 功能

1.功能
  • 普通单选
  • 普通多选
  • 预选中
  • 拦截器
  • ...
3.优点
  • 简单易用
  • 低耦合
  • 不用为Bean添加额外字段
  • 没有调用 Adapter.notifyItemChange方法,所以不会有闪屏Bug

三 使用

1.配置

Step 1. 在你项目的 Project (根目录)的 build.gradle 文件添加下面配置:

	allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}
复制代码

Step 2. 在需要使用的模块下添加以下依赖

	dependencies {
	        //Tag更换成最新的版本号,比如 1.1
	        implementation 'com.github.gminibird:CheckHelper:Tag'
	}
复制代码

依赖包中依赖了RecyclerView,如果项目中已经使用了不同版本,可以使用以下配置:

	dependencies {
	        //Tag更换成最新的版本号,比如 1.1
	        implementation 'com.github.gminibird:CheckHelper:Tag',{
	            exclude group: 'com.android.support'
	        }
	}
复制代码

最后那个1.0是版本号,可以上 GitHub 上看最新的,然后就可以愉快的玩耍啦。

2.使用
  • 创建CheckHelper实例
    SingleCheckHelper mCheckHelper = new SingleCheckHelper();
    //or
    MultiCheckHelper mCheckHelper = new MultiCheckHelper();
    复制代码
  • 注册选择器
    mCheckHelper.register(String.class, new CheckHelper.Checker<String, LwViewHolder>() 
    @Override
    public void check(String s, LwViewHolder holder) {
        //选中状态
        holder.itemView.setBackgroundColor(0xFF73E0E4); //蓝色
        holder.setChecked(R.id.checkbox, true);
    }
    @Override
    public void unCheck(String s, LwViewHolder holder) {
        //非选中状态
        holder.itemView.setBackgroundColor(0xFFFFFFFF);  //白色
        holder.setChecked(R.id.checkbox, false);
    }
    });
    复制代码
  • 绑定到Adapter中
    @Override
    protected void onBind(@NonNull LwViewHolder holder, @NonNull String item) {
        //这里用了自己封装的Adapter,相当于onBindViewHolder方法
        mCheckHelper.bind(item, holder, holder.itemView);
    }
    复制代码

然后,然后就完成了。。。运行就可以看到想要的效果,选中的数据可以调用相应CheckHelper实例的getXXX()获取。

四 效果

废话少说,先上图:

1.左到右分别为 单选->多选->拦截器

五 Api

1. CheckHelper (基类)
返回值方法说明
voidregister(Class, Checker)注册Checker,提供选中以及非选中状态
voidbind(Object, ViewHolder)绑定,没有指定点击View,需要额外设置点击事件,并主动调用select()方法
voidbind(Object,ViewHolder, @IdRes int)绑定,并指定触发事件的 View id
voidbind(Object,ViewHolder, View)绑定,并指定触发事件的 View
voidbind(Object, ViewHolder, boolean)手动绑定
voidselect(Object, ViewHolder)手动选择(状态值非当前状态的相反值)
voidselect(Object, ViewHolder, boolean)手动选择(可设置状态)
voidaddOnCheckListener(Class,OnCheckListene)添加check监听(触发条件为bind监听与select监听的并集)
voidaddOnSelectListener(Class,OnSelectListener)添加select监听(点击时调用)
voidaddOnBindListener(Class,onBindListener)添加bind监听(onBindViewHolder调用时调用)
voidaddInterceptor(Interceptor interceptor)添加拦截器
booleanisChecked(Object,ViewHolder)判断当前实例是否选中
booleanhasChecked()判断是否至少选中一个
voidadd(Object)添加默认选中
voidremove(Object)删除选中
TgetChecked()获取所有选中
2. SingleCheckHelper(单选)
返回值方法说明
voidsetCanCancel(booleanl)设置是否可以取消

3. MultiCheckHelper(多选)

返回值方法说明
SetgetChecked(Class)获取指定类型的所有选中
booleanisAllChecked(List<?>)指定列表是否全部选中
booleanisAllChecked(List<?>, Class)指定列表里面的指定类型是否全部选中
voidcheckAll(Map<?,ViewHolder>)选择全部(指定数据)
voidcheckAll(List<?>, Adapter)选择全部(指定数据)
voidunCheckAll(Adapter adapter)取消全部选中
voidunCheckAll(Adapter adapter, Class, List)取消全部选中(指定数据)
voidunCheckAll(Adapter, Class)取消全部选中(指定数据,指定类型)


written by gminibird

源码戳上面 ^^^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值