Android开发手册Chip监听及ChipGroup监听
作者:芝麻粒儿 时间:2023-03-13 01:16:36
??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
标签:Android,Chip,ChipGroup,监听
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
c#单例模式(Singleton)的6种实现
2021-07-01 10:17:51
![](https://img.aspxhome.com/file/2023/7/89797_0s.gif)
C#中ref关键字的用法
2022-07-17 21:30:47
![](https://img.aspxhome.com/file/2023/5/125985_0s.png)
java计算两个时间相差天数的方法汇总
2023-08-29 23:39:03
Java方法调用解析静态分派动态分派执行过程
2023-05-03 04:32:40
JAVA实现SOCKET多客户端通信的案例
2023-08-26 19:10:35
![](https://img.aspxhome.com/file/2023/0/122950_0s.jpg)
Java螺旋矩阵处理方法详解
2021-09-24 02:14:55
![](https://img.aspxhome.com/file/2023/5/126355_0s.png)
Android XListView下拉刷新和上拉加载更多
2022-11-01 19:07:45
![](https://img.aspxhome.com/file/2023/8/126698_0s.gif)
C#中#define后面只加一个参数的解释
2022-09-06 07:23:55
Activiti开发环境的配置
2021-07-31 21:57:51
![](https://img.aspxhome.com/file/2023/9/83499_0s.jpg)
java设计模式--三种工厂模式详解
2023-11-29 09:54:06
![](https://img.aspxhome.com/file/2023/7/60337_0s.png)
Android 给控件添加边框阴影效果
2021-08-13 17:12:07
深入解读Android的Volley库的功能结构
2023-02-28 00:57:12
![](https://img.aspxhome.com/file/2023/5/116005_0s.jpg)
android View 绘制完成监听的实现方法
2023-08-06 20:47:05
mybatis plus使用redis作为二级缓存的方法
2023-11-19 08:34:58
![](https://img.aspxhome.com/file/2023/0/63150_0s.png)
C#回收机制之资源回收托管
2022-03-04 13:18:20
Netty分布式获取异线程释放对象源码剖析
2021-12-28 09:45:42
![](https://img.aspxhome.com/file/2023/8/96118_0s.png)
android开发之为activity增加左右手势识别示例
2021-09-30 12:41:50
浅谈C#指针问题
2022-07-19 17:06:00
Java Web程序实现返回JSON字符串的方法总结
2023-07-28 22:46:48
![](https://img.aspxhome.com/file/2023/9/66169_0s.png)
Java中的SuppressWarnings注解使用
2023-08-18 17:31:19
![](https://img.aspxhome.com/file/2023/9/78269_0s.png)