網站首頁 編程語言 正文
??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
相關推薦
- 2022-05-23 Nginx中location匹配以及rewrite重寫跳轉詳解_nginx
- 2022-07-02 python?np.arange?步長0.1的問題需要特別注意_python
- 2022-05-17 qt 錯誤GL/gl.h: No such file or directory的解決方法
- 2022-11-14 Go語言文件讀寫操作案例詳解_Golang
- 2022-06-15 Python遞歸生成全排列序列實操_python
- 2023-02-17 python?如何獲取文件夾中的全部文件_python
- 2022-11-20 .Net中Task?Parallel?Library的基本用法_基礎應用
- 2022-05-23 Jenkins實現集群化管理以及流水線項目配置_nginx
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支