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 相关文章推荐
手把手教你用SpringBoot将文件打包成zip存放或导出
Jun 11 Java/Android
Java Shutdown Hook场景使用及源码分析
Jun 15 Java/Android
Java循环队列与非循环队列的区别总结
Jun 22 Java/Android
Java中常用解析工具jackson及fastjson的使用
Jun 28 Java/Android
JavaGUI模仿QQ聊天功能完整版
Jul 04 Java/Android
新手初学Java网络编程
Jul 07 Java/Android
springmvc直接不经过controller访问WEB-INF中的页面问题
Feb 24 Java/Android
解析探秘fescar分布式事务实现原理
Feb 28 Java/Android
Java 关于String字符串原理上的问题
Apr 07 Java/Android
JAVA长虹键法之建造者Builder模式实现
Apr 10 Java/Android
Java实现HTML转为Word的示例代码
Jun 28 Java/Android
向Spring IOC 容器动态注册bean实现方式
Jul 15 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基础学习小结
2011/04/17 PHP
php实现用户在线时间统计详解
2011/10/08 PHP
浅析php如何实现App常用的秒发功能
2016/08/03 PHP
详细分析PHP 命名空间(namespace)
2020/06/30 PHP
jQuery学习基础知识小结
2010/11/25 Javascript
jquery实现从数组移除指定的值
2015/06/24 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
vue滚动轴插件better-scroll使用详解
2017/10/17 Javascript
vue踩坑记录之数组定义和赋值问题
2019/03/20 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
JavaScript代码模拟鼠标自动点击事件示例
2020/08/07 Javascript
Vue $attrs &amp; inheritAttr实现button禁用效果案例
2020/12/07 Vue.js
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
举例讲解Python的Tornado框架实现数据可视化的教程
2015/05/02 Python
Python引用传值概念与用法实例小结
2017/10/07 Python
django主动抛出403异常的方法详解
2019/01/04 Python
Python使用LDAP做用户认证的方法
2019/06/20 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
番木瓜健康和保健产品第一大制造商:Herbal Papaya
2017/04/25 全球购物
印度尼西亚电子产品购物网站:Kliknklik
2018/06/05 全球购物
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
英国最大的天然和有机产品在线零售商之一:Big Green Smile
2020/05/06 全球购物
Java中会存在内存泄漏吗,请简单描述
2016/12/22 面试题
奖学金自我鉴定范文
2013/10/03 职场文书
学校司机岗位职责
2013/11/14 职场文书
本科毕业论文导师评语
2014/12/31 职场文书
超市采购员岗位职责
2015/04/07 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书
JS不要再到处使用绝对等于运算符了
2021/04/30 Javascript
Linux中sftp常用命令整理
2022/06/28 Servers
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技
Fluentd搭建日志收集服务
2022/09/23 Servers