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 相关文章推荐
Spring Data JPA使用JPQL与原生SQL进行查询的操作
Jun 15 Java/Android
springboot利用redis、Redisson处理并发问题的操作
Jun 18 Java/Android
深入理解java.lang.String类的不可变性
Jun 27 Java/Android
简单总结SpringMVC拦截器的使用方法
Jun 28 Java/Android
Maven学习----Maven安装与环境变量配置教程
Jun 29 Java/Android
Java数组与堆栈相关知识总结
Jun 29 Java/Android
Java 泛型详解(超详细的java泛型方法解析)
Jul 02 Java/Android
Java字符缓冲流BufferedWriter
Apr 09 Java/Android
JAVA 线程池(池化技术)的实现原理
Apr 28 Java/Android
Java 死锁解决方案
May 11 Java/Android
利用正则表达式匹配浮点型数据
May 30 Java/Android
java实现web实时消息推送的七种方案
Jul 23 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 excel类 phpExcel使用方法介绍
2010/08/21 PHP
PHP反射使用实例和PHP反射API的中文说明
2014/07/02 PHP
PHP图像处理类库及演示分享
2015/05/17 PHP
php实现简单四则运算器
2020/11/29 PHP
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
jquery 插件学习(六)
2012/08/06 Javascript
浅析JQuery UI Dialog的样式设置问题
2013/12/18 Javascript
删除节点的jquery代码
2014/01/13 Javascript
通过$(this)使用jQuery包装后的方法或属性
2014/05/18 Javascript
Egret引擎开发指南之创建项目
2014/09/03 Javascript
JavaScript的原型继承详解
2015/02/15 Javascript
基于Angularjs实现分页功能
2016/05/30 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
利用vue实现模态框组件
2016/12/19 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
浅谈Angular2 模块懒加载的方法
2017/10/04 Javascript
在ES5与ES6环境下处理函数默认参数的实现方法
2018/05/13 Javascript
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
原生js实现购物车
2020/09/23 Javascript
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
python3使用SMTP发送HTML格式邮件
2018/06/19 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
python3中TQDM库安装及使用详解
2020/11/18 Python
分享一个页面平滑滚动小技巧(推荐)
2019/10/23 HTML / CSS
行政总经理岗位职责
2013/12/05 职场文书
单位成立周年感言
2014/01/26 职场文书
《自选商场》教学反思
2014/02/14 职场文书
技校毕业生自荐信范文
2014/03/07 职场文书
房产委托公证书样本
2014/04/04 职场文书
营销团队口号
2014/06/06 职场文书
维稳承诺书
2015/01/20 职场文书
市场部岗位职责范本
2015/04/15 职场文书
寒假致家长的一封信
2015/10/10 职场文书
2016元旦文艺汇演主持词(开场白+结束语)
2015/12/03 职场文书