Android开发手册Chip监听及ChipGroup监听
作者:芝麻粒儿 发布时间:2023-03-13 01:16:36
标签:Android,Chip,ChipGroup,监听
??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
}
效果展示
来源:https://juejin.cn/post/7064352728855609357


猜你喜欢
- 先来看问题纠结了几个小时终于找到了问题所在,因为shiro的realm属于Filter,简单说就是初始化realm时,spring还未加载相
- 运行本实例,将显示一个用户登录界面,输入用户名(hpuacm)和密码(1111)后,单击"登录"按钮,将弹出如下图所示的
- 先给大家展示下效果图:废话不多说了,下面通过示例代码给大家介绍checkbox 多项选择当前的position信息提交,具体代码如下所示:p
- Android 应用签名的两种方法一、使用pem签名 (一) apk签名命令java –jar sign
- 1. 支持的视图技术前端模板引擎技术的出现,使前端开发人员无需关注后端业务的具体实现,只关注自己页面的呈现效果即可,并且解决了前端代码错综复
- 目录图像修复API操作效果源码图像修复实际应用中,图像常常容易受损,如存在污渍的镜头、旧照片的划痕、人为的涂画(比如马赛克),亦或是图像本身
- SpringMVC通过模型视图ModelAndView渲染视图大致流程代码样例1.准备工作A.因为文中用到jsp,所以需要引入jsp标准标签
- 什么是mybatisMyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数
- 本文实例为大家分享了opencv利用视频的前n帧求平均图像的具体代码,供大家参考,具体内容如下自己写的哈,可以用该小程序对视频求解平均模型。
- 1. 在原有工程目录右键-> new ->Module->:2. 选择library:3. 一路next,最后finish
- 什么是EJB?EJB 是 Java 企业Bean, 是JavaEE服务端 企业组件模型,它的设计目标与核心应用是部署分布式应用程序。话不多说
- 将此实例的子字符串中所有指定字符的匹配项替换为其他指定字符。 命名空间:System.Text 程序集:mscorl
- 一般我们在java中运行其它类中的方法时,无论是静态调用,还是动态调用,都是在当前的进程中执行的,也就是说,只有一个java虚拟机实例在运行
- 第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序
- 1. 通过将数组转换成List,然后使用List中的contains进行判断其是否存在public static boolean useLi
- 测试是开发的一个非常重要的方面,可以在很大程度上决定一个应用程序的命运。良好的测试可以在早期捕获导致应用程序崩溃的问题,但较差的测试往往总是
- C# 获取某个时间的0点0分和23点59分59秒,具体代码如下所示:C#获取当月第一天和最后一天当月第一天0时0分0秒:DateTime.N
- 如下所示:/** * 读写权限 自己可以添加需要判断的权限 */public static String[]permissionsREAD=
- 利用之前学过的多线程处理技术,我们做一个开启新线程实现电子广告牌的项目界面布局文件,加入ImageView图片控件,用于显示一个图片,一个T
- 新手学习记录。写在springboot test 示例 示例代码地址看结尾。后面有带页面的示例。SpringBoot Test无