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中的static关键字
Jun 14 Java/Android
jackson json序列化实现首字母大写,第二个字母需小写
Jun 29 Java/Android
dubbo服务整合zipkin详解
Jul 26 Java/Android
SpringBoot2零基础到精通之数据库专项精讲
Mar 22 Java/Android
SpringBoot中使用Redis作为全局锁示例过程
Mar 24 Java/Android
Java实现经典游戏泡泡堂的示例代码
Apr 04 Java/Android
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
Apr 13 Java/Android
Spring Boot 使用 Spring-Retry 进行重试框架
Apr 24 Java/Android
Java设计模式中的命令模式
Apr 28 Java/Android
JAVA springCloud项目搭建流程
May 11 Java/Android
java实现面板之间切换功能
Jun 10 Java/Android
SpringBoot深入分析讲解监听器模式下
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
克隆一个新项目的快捷方式
2013/04/10 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
PHP将身份证正反面两张照片合成一张图片的代码
2017/04/08 PHP
centos7上编译安装php7以php-fpm方式连接apache
2018/11/08 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
JavaScript高级程序设计 读书笔记之八 Function类及闭包
2012/02/27 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
2015/09/14 Javascript
Angular2内置指令NgFor和NgIf详解
2016/08/03 Javascript
Angular2学习笔记——详解NgModule模块
2016/12/02 Javascript
vue-cli如何添加less 以及sass
2017/07/06 Javascript
JScript实现地址选择功能
2017/08/15 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
JavaScript选择排序算法原理与实现方法示例
2018/08/06 Javascript
学习使用ExpressJS 4.0中的新Router的用法
2018/11/06 Javascript
node之本地服务器图片上传的方法示例
2019/03/26 Javascript
原生js+canvas实现下雪效果
2020/08/02 Javascript
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
python提取xml里面的链接源码详解
2019/10/15 Python
django 外键创建注意事项说明
2020/05/20 Python
伦敦一家非常流行的时尚精品店:Oxygen Boutique
2017/01/15 全球购物
乌克兰时尚鞋子和衣服购物网站:Born2be
2018/05/24 全球购物
智能电子应届生求职信
2013/11/10 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
2014年小学教师工作自我评价
2014/09/22 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
JS实现扫雷项目总结
2021/05/19 Javascript
使用tensorflow 实现反向传播求导
2021/05/26 Python
Python多线程 Queue 模块常见用法
2021/07/04 Python
python之json文件转xml文件案例讲解
2021/08/07 Python
MyBatis XPathParser解析器使用范例详解
2022/07/15 Java/Android