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实战之用Swing实现通讯录管理系统
Jun 13 Java/Android
启动Tomcat时出现大量乱码的解决方法
Jun 21 Java/Android
eclipse创建项目没有dynamic web的解决方法
Jun 24 Java/Android
解决SpringBoot跨域的三种方式
Jun 26 Java/Android
Java中多线程下载图片并压缩能提高效率吗
Jul 01 Java/Android
Java基础-封装和继承
Jul 02 Java/Android
Java获取e.printStackTrace()打印的信息方式
Aug 07 Java/Android
alibaba seata服务端具体实现
Feb 24 Java/Android
springboot layui hutool Excel导入的实现
Mar 31 Java/Android
Android开发 使用文件储存的方式保存QQ密码
Apr 24 Java/Android
Spring Data JPA框架持久化存储数据到数据库
Apr 28 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删除文本文件中重复行的方法
2015/04/28 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
PHP实现的随机IP函数【国内IP段】
2016/07/20 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
JS实现点击图片在当前页面放大并可关闭的漂亮效果
2013/10/18 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
浅谈Sublime Text 3运行JavaScript控制台
2016/06/06 Javascript
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
在Web关闭页面时发送Ajax请求的实现方法
2019/03/07 Javascript
详解vue3.0 diff算法的使用(超详细)
2020/07/01 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
python冒泡排序算法的实现代码
2013/11/21 Python
Python专用方法与迭代机制实例分析
2014/09/15 Python
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
Python编程实现二分法和牛顿迭代法求平方根代码
2017/12/04 Python
python如何读写json数据
2018/03/21 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
2020/05/27 Python
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
澳大利亚领先的孕妇服装品牌:Mamaway
2018/08/14 全球购物
有趣的流行文化T恤、马克杯、手机壳和更多:Look Human
2019/01/07 全球购物
请解释流与文件有什么不同
2016/07/29 面试题
护理专业个人求职简历的自我评价
2013/10/13 职场文书
大学生毕业自我评价范文分享
2013/11/07 职场文书
酒店应聘自荐信
2013/11/09 职场文书
环境工程毕业生自荐信
2013/11/17 职场文书
校园歌手大赛策划书
2014/01/17 职场文书
法院授权委托书范文
2014/08/02 职场文书
工伤私了协议书范本
2014/11/24 职场文书
本科毕业论文导师评语
2014/12/31 职场文书
飞屋环游记观后感
2015/06/08 职场文书