Android开发手册Chip监听及ChipGroup监听


Posted in Java/Android onJune 10, 2022

?Chip监听

选中状态的监听:setOnCheckedChangeListener,该监听只有设置了checkable 属性为true或者使用了【filter/entry/choice】这三个style主题的时候才生效。

点击事件的监听:setOnClickListener

关闭按钮被点击的监听:setOnCloseIconClickListener

Java

myChip.setOnCloseIconClickListener(View.OnClickListener { v: View? ->
    //进行业务处理
    Log.e("TAG", "onCreate: Chip文字后面图标点击事件")
})
myChip.setOnClickListener(View.OnClickListener { v: View? ->
    //进行业务处理
    Log.e("TAG", "onCreate: Chip整体普通点击事件")
})
myChip.setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener { buttonView: CompoundButton?, isChecked: Boolean ->
    //进行业务处理
    Log.e("TAG", "onCreate: Chip选中状态监听")
})

Kotlin

myChip.setOnCloseIconClickListener(v -> {
    //进行业务处理
    Log.e("TAG", "onCreate: Chip文字后面图标点击事件");
});
myChip.setOnClickListener(v -> {
    //进行业务处理
    Log.e("TAG", "onCreate: Chip整体普通点击事件");
});
myChip.setOnCheckedChangeListener((buttonView, isChecked) -> {
    //进行业务处理
    Log.e("TAG", "onCreate: Chip选中状态监听");
});

?ChipGroup监听

myChipGroup.setOnCheckedChangeListener(new ChipGroup.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(ChipGroup group, int checkedId) {
        //看到这的小伙伴可能就疑问了,区分view的id做不同的业务,如果是布局中写好的还可以,但实际上子view应该是根据接口数据添加进去的,这些点击怎么区分呢?
        //我们下篇示例做个完整的。
        Log.e("TAG", "onCheckedChanged: 选中view的id");
    }
});

?实例

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <com.google.android.material.chip.ChipGroup
        android:id="@+id/myChipGroupExample"
        android:layout_width="wrap_content"
        app:singleSelection="true"
        android:layout_height="wrap_content">
</LinearLayout>

Java

public class TestChipAndChipGroupActivity extends AppCompatActivity {
    private List<Chip> chipViewList = new ArrayList<>();
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_chip_chipgroup);
        ChipGroup myChipGroupExample = findViewById(R.id.myChipGroupExample);
        List<String> dataList = new ArrayList<>();
        dataList.add("芝麻粒儿");
        dataList.add("这是你的业务数据");
        dataList.add("根据业务数据");
        dataList.add("创建子View");
        dataList.add("公众号");
        dataList.add("空名先生");
        for (String temp : dataList) {
            myChipGroupExample.addView(createChipView(temp));
        }
        myChipGroupExample.setOnCheckedChangeListener(new ChipGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(ChipGroup group, int checkedId) {
                //看到这的小伙伴可能就疑问了,区分view的id做不同的业务,如果是布局中写好的还可以,但实际上子view应该是根据接口数据添加进去的,这些点击怎么区分呢?
                //我们下篇示例做个完整的。
                for (Chip tempChip : chipViewList) {
                    if (tempChip.getId() == checkedId) {
                        Log.e("TAG", "onCheckedChanged: 选中view的id内容:" + tempChip.getText());
                    }
                }
            }
        });
    }
    private View createChipView(String temp) {
        Chip chipView = new Chip(this);
        chipView.setId(View.generateViewId());
        chipView.setText(temp);
        chipView.setChipIcon(getDrawable(R.drawable.icon_xin));
        //设置是否可以选中
        chipView.setCheckable(true);
        chipView.setTextSize(18);
        chipViewList.add(chipView);
        return chipView;
    }
}

Kotlin代码

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_test)
    val myChipGroupExample = findViewById<ChipGroup>(R.id.myChipGroupExample)
    val dataList: MutableList<String> = java.util.ArrayList()
    dataList.add("芝麻粒儿")
    dataList.add("这是你的业务数据")
    dataList.add("根据业务数据")
    dataList.add("创建子View")
    dataList.add("公众号")
    dataList.add("空名先生")
    for (temp in dataList) {
        myChipGroupExample.addView(createChipView(temp!!))
    }
    myChipGroupExample.setOnCheckedChangeListener { group, checkedId -> //看到这的小伙伴可能就疑问了,区分view的id做不同的业务,如果是布局中写好的还可以,但实际上子view应该是根据接口数据添加进去的,这些点击怎么区分呢?
        //我们下篇示例做个完整的。
        for (tempChip in chipViewList) {
            if (tempChip.id == checkedId) {
                Log.e("TAG", "onCheckedChanged: 选中view的id内容:" + tempChip.text)
            }
        }
    }
}
private val chipViewList: MutableList<Chip> = ArrayList()
private fun createChipView(temp: String): View? {
    val chipView = Chip(this)
    chipView.id = View.generateViewId()
    chipView.text = temp
    chipView.chipIcon = getDrawable(R.drawable.icon_xin)
    //设置是否可以选中
    chipView.isCheckable = true
    chipView.textSize = 18f
    chipViewList.add(chipView)
    return chipView
}

效果展示

Android开发手册Chip监听及ChipGroup监听

以上就是Android开发手册Chip监听及ChipGroup监听的详细内容,更多关于Android开发Chip及ChipGroup监听的资料请关注三水点靠木其它相关文章!


Tags in this post...

Java/Android 相关文章推荐
解决tk mapper 通用mapper的bug问题
Jun 16 Java/Android
Java各种比较对象的方式的对比总结
Jun 20 Java/Android
Spring Boot 启动、停止、重启、状态脚本
Jun 26 Java/Android
Java常用函数式接口总结
Jun 29 Java/Android
在Spring-Boot中如何使用@Value注解注入集合类
Aug 02 Java/Android
Netty客户端接入流程NioSocketChannel创建解析
Mar 25 Java/Android
springboot用户数据修改的详细实现
Apr 06 Java/Android
Java Lambda表达式常用的函数式接口
Apr 07 Java/Android
java高级用法JNA强大的Memory和Pointer
Apr 19 Java/Android
Java 数组的使用
May 11 Java/Android
springboot读取nacos配置文件
May 20 Java/Android
Java异常体系非正常停止和分类
Jun 14 Java/Android
Java实现带图形界面的聊天程序
Jun 10 #Java/Android
Android中View.post和Handler.post的关系
Android Canvas绘制文字横纵向对齐
Jun 05 #Java/Android
Android 中的类文件和类加载器详情
Android中的Launch Mode详情
Spring中的@Transactional的工作原理
Jun 05 #Java/Android
Qt数据库应用之实现图片转pdf
You might like
用libtemplate实现静态网页生成
2006/10/09 PHP
[原创]php实现 data url的图片生成与保存
2016/12/04 PHP
PHP面向对象程序设计方法实例详解
2016/12/24 PHP
PHP实现对图片的反色处理功能【测试可用】
2018/02/01 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
JS操作Cookies包括(读取添加与删除)
2012/12/26 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
React快速入门教程
2017/01/17 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
2017/01/19 Javascript
js仿网易表单及时验证功能
2017/03/07 Javascript
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
2018/02/22 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
Python中实现常量(Const)功能
2015/01/28 Python
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
Python语法快速入门指南
2015/10/12 Python
python pip源配置,pip配置文件存放位置的方法
2019/07/12 Python
python nmap实现端口扫描器教程
2020/05/28 Python
Python Django中间件,中间件函数,全局异常处理操作示例
2019/11/08 Python
python 初始化一个定长的数组实例
2019/12/02 Python
使用py-spy解决scrapy卡死的问题方法
2020/09/29 Python
利用CSS3的flexbox实现水平垂直居中与三列等高布局
2016/09/12 HTML / CSS
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
英国口碑最好的的维他命胶囊品牌:Myvitamins(有中文站)
2016/12/03 全球购物
Java如何格式化日期
2012/08/07 面试题
如何理解委托
2012/01/06 面试题
内科护士实习自我鉴定
2013/10/17 职场文书
40岁生日感言
2014/02/15 职场文书
动画设计系毕业生求职信
2014/07/15 职场文书
2014年班主任工作总结
2014/11/08 职场文书
爱心助学感谢信
2015/01/21 职场文书
2016年中秋节寄语大全
2015/12/07 职场文书
JavaScript原始值与包装对象的详细介绍
2021/05/11 Javascript
Vue3.0中Ref与Reactive的区别示例详析
2021/07/07 Vue.js
python 详解turtle画爱心代码
2022/02/15 Python