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 相关文章推荐
详解JAVA中的OPTIONAL
Jun 14 Java/Android
Spring Data JPA使用JPQL与原生SQL进行查询的操作
Jun 15 Java/Android
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
Jun 21 Java/Android
Feign调用传输文件异常的解决
Jun 24 Java/Android
eclipse创建项目没有dynamic web的解决方法
Jun 24 Java/Android
Lombok的详细使用及优缺点总结
Jul 15 Java/Android
springboot中的pom文件 project报错问题
Jan 18 Java/Android
java协程框架quasar和kotlin中的协程对比分析
Feb 24 Java/Android
spring cloud eureka 服务启动失败的原因分析及解决方法
Mar 17 Java/Android
Spring事务管理下synchronized锁失效问题的解决方法
Mar 31 Java/Android
springboot应用服务启动事件的监听实现
Apr 06 Java/Android
SpringBoot中获取profile的方法详解
Apr 08 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
php数组函数序列之array_combine() - 数组合并函数使用说明
2011/10/29 PHP
php 批量生成html,txt文件的实现代码
2013/06/26 PHP
8个必备的PHP功能实例代码
2013/10/27 PHP
微信公众号模板消息群发php代码示例
2016/12/29 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
PHP7新功能总结
2019/04/14 PHP
PHP抽象类与接口的区别实例详解
2019/05/09 PHP
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
全面了解JavaScript对象进阶
2016/07/19 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
2016/11/25 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
ES6新特性:使用export和import实现模块化详解
2017/07/31 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
vue-cli项目代理proxyTable配置exclude的方法
2018/09/20 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
[45:16]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第一场 12.12
2020/12/16 DOTA
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
Python httplib模块使用实例
2015/04/11 Python
Python优化技巧之利用ctypes提高执行速度
2016/09/11 Python
python基础教程之Filter使用方法
2017/01/17 Python
windows系统下Python环境搭建教程
2017/03/28 Python
python中实现指定时间调用函数示例代码
2017/09/08 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
Python常用的json标准库
2019/02/19 Python
python字典排序的方法
2019/10/12 Python
Python 中@property的用法详解
2020/01/15 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
2020/07/02 Python
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
现代绅士日常奢侈品:Todd Snyder
2019/12/13 全球购物
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
刑事辩护授权委托书范本
2014/10/17 职场文书
信贷客户经理岗位职责
2015/04/09 职场文书
2019毕业论文致谢词
2019/06/24 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书