How to get selected chips from ChipGroup?

后端 未结 3 1985
小蘑菇
小蘑菇 2021-01-03 07:43

I search a lot on internet but couldn\'t find the exact solution. Here is the link that i last tried from SO. Get selected Chips from a ChipGroup

I want to get selec

相关标签:
3条回答
  • 2021-01-03 07:55

    the solution I used in Kotlin with data binding

    mBinding?.chipGroup?.children
                ?.toList()
                ?.filter { (it as Chip).isChecked }
                ?.forEach { //here are your selected chips as 'it' }
    

    And here is how I got just titles

    mBinding?.chipGroup?.children
                ?.toList()
                ?.filter { (it as Chip).isChecked }
                ?.joinToString(", ") { (it as Chip).text }
    
    0 讨论(0)
  • 2021-01-03 08:13

    Starting with the version 1.2.0 you can use the method chipGroup.getCheckedChipIds()

    List<Integer> ids = chipGroup.getCheckedChipIds();
    for (Integer id:ids){
          Chip chip = chipGroup.findViewById(id);
          //....
    }
    

    OLD ANSWER with 1.1.0:

    currently there isn't a direct API to get the selected chips.
    However you can iterate through the children of the ChipGroup and check chip.isChecked().

       ChipGroup chipGroup = findViewById(R.id.....);
       for (int i=0; i<chipGroup.getChildCount();i++){
          Chip chip = (Chip)chipGroup.getChildAt(i);
          if (chip.isChecked()){
             //this chip is selected..... 
          }
        }
    
    0 讨论(0)
  • 2021-01-03 08:13

    I used below mentioned method to detect the selected chips in chipGroup.

    for (chipTitle in stringList) {
        val chip = Chip(chipGroup.context)
        chip.text = chipTitle
        chip.tag = chipTitle
        chip.isClickable = true
        chip.isCheckable = true
        chip.setOnCheckedChangeListener { _, isChecked ->
            if (isChecked){
                Log.e(TAG, chipTitle)
            }
        }
        chipGroup.addView(chip)
    }
    chipGroup.isSingleSelection = true
    
    0 讨论(0)
提交回复
热议问题