Android開發(fā)手冊Chip監(jiān)聽及ChipGroup監(jiān)聽
??Chip監(jiān)聽
選中狀態(tài)的監(jiān)聽:setOnCheckedChangeListener,該監(jiān)聽只有設(shè)置了checkable 屬性為true或者使用了【filter/entry/choice】這三個style主題的時候才生效。
點擊事件的監(jiān)聽:setOnClickListener
關(guān)閉按鈕被點擊的監(jiān)聽:setOnCloseIconClickListener
Java
myChip.setOnCloseIconClickListener(View.OnClickListener { v: View? ->
//進(jìn)行業(yè)務(wù)處理
Log.e("TAG", "onCreate: Chip文字后面圖標(biāo)點擊事件")
})
myChip.setOnClickListener(View.OnClickListener { v: View? ->
//進(jìn)行業(yè)務(wù)處理
Log.e("TAG", "onCreate: Chip整體普通點擊事件")
})
myChip.setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener { buttonView: CompoundButton?, isChecked: Boolean ->
//進(jìn)行業(yè)務(wù)處理
Log.e("TAG", "onCreate: Chip選中狀態(tài)監(jiān)聽")
})
Kotlin
myChip.setOnCloseIconClickListener(v -> {
//進(jìn)行業(yè)務(wù)處理
Log.e("TAG", "onCreate: Chip文字后面圖標(biāo)點擊事件");
});
myChip.setOnClickListener(v -> {
//進(jìn)行業(yè)務(wù)處理
Log.e("TAG", "onCreate: Chip整體普通點擊事件");
});
myChip.setOnCheckedChangeListener((buttonView, isChecked) -> {
//進(jìn)行業(yè)務(wù)處理
Log.e("TAG", "onCreate: Chip選中狀態(tài)監(jiān)聽");
});
??ChipGroup監(jiān)聽
myChipGroup.setOnCheckedChangeListener(new ChipGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(ChipGroup group, int checkedId) {
//看到這的小伙伴可能就疑問了,區(qū)分view的id做不同的業(yè)務(wù),如果是布局中寫好的還可以,但實際上子view應(yīng)該是根據(jù)接口數(shù)據(jù)添加進(jìn)去的,這些點擊怎么區(qū)分呢?
//我們下篇示例做個完整的。
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("這是你的業(yè)務(wù)數(shù)據(jù)");
dataList.add("根據(jù)業(yè)務(wù)數(shù)據(jù)");
dataList.add("創(chuàng)建子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) {
//看到這的小伙伴可能就疑問了,區(qū)分view的id做不同的業(yè)務(wù),如果是布局中寫好的還可以,但實際上子view應(yīng)該是根據(jù)接口數(shù)據(jù)添加進(jìn)去的,這些點擊怎么區(qū)分呢?
//我們下篇示例做個完整的。
for (Chip tempChip : chipViewList) {
if (tempChip.getId() == checkedId) {
Log.e("TAG", "onCheckedChanged: 選中view的id內(nèi)容:" + 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));
//設(shè)置是否可以選中
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("這是你的業(yè)務(wù)數(shù)據(jù)")
dataList.add("根據(jù)業(yè)務(wù)數(shù)據(jù)")
dataList.add("創(chuàng)建子View")
dataList.add("公眾號")
dataList.add("空名先生")
for (temp in dataList) {
myChipGroupExample.addView(createChipView(temp!!))
}
myChipGroupExample.setOnCheckedChangeListener { group, checkedId -> //看到這的小伙伴可能就疑問了,區(qū)分view的id做不同的業(yè)務(wù),如果是布局中寫好的還可以,但實際上子view應(yīng)該是根據(jù)接口數(shù)據(jù)添加進(jìn)去的,這些點擊怎么區(qū)分呢?
//我們下篇示例做個完整的。
for (tempChip in chipViewList) {
if (tempChip.id == checkedId) {
Log.e("TAG", "onCheckedChanged: 選中view的id內(nèi)容:" + 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)
//設(shè)置是否可以選中
chipView.isCheckable = true
chipView.textSize = 18f
chipViewList.add(chipView)
return chipView
}
效果展示

以上就是Android開發(fā)手冊Chip監(jiān)聽及ChipGroup監(jiān)聽的詳細(xì)內(nèi)容,更多關(guān)于Android開發(fā)Chip及ChipGroup監(jiān)聽的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android實現(xiàn)打開各種文件的intent方法小結(jié)
這篇文章主要介紹了Android實現(xiàn)打開各種文件的intent方法,結(jié)合實例形式總結(jié)分析了Android針對HTML、圖片文件、pdf文件、文本文件、音頻文件、視頻文件等的intent打開方法,需要的朋友可以參考下2016-08-08
Activity透明/半透明效果的設(shè)置transparent(兩種實現(xiàn)方法)
兩種方法實現(xiàn)Activity透明/半透明效果的設(shè)置,代碼思路很有調(diào)理,感興趣的朋友可以參考下,希望本文可以幫助到你2013-02-02
Android 7.0 運行時權(quán)限彈窗問題的解決
這篇文章主要介紹了Android 7.0 運行時權(quán)限彈窗問題的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
android使用OkHttp實現(xiàn)下載的進(jìn)度監(jiān)聽和斷點續(xù)傳
本篇文章主要介紹了android使用OkHttp實現(xiàn)下載的進(jìn)度監(jiān)聽和斷點續(xù)傳,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-02-02
Android使用WebView.loadUri()打開網(wǎng)頁的方法
這篇文章主要介紹了Android使用WebView.loadUri()打開網(wǎng)頁的方法,結(jié)合實例形式分析了Android中WebView控件的loadUri()打開網(wǎng)頁的使用技巧,需要的朋友可以參考下2016-01-01

