软件编程
位置:首页>> 软件编程>> Android编程>> Android开发手册Chip监听及ChipGroup监听

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
}

效果展示

Android开发手册Chip监听及ChipGroup监听

来源:https://juejin.cn/post/7064352728855609357

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com