msa*_*i76 9 java android android-chips material-components material-components-android
我在互联网上搜索了很多,但找不到确切的解决方案。这是我上次从 SO 尝试的链接。 从 ChipGroup 中获取选定的 Chips
我想在单击按钮时从芯片组中获取选定的芯片。
此函数包含在 RecyclerView 中显示名称的信息
private void getNames() {
List<String> names = Arrays.asList(getResources().getStringArray(R.array.names));
int count = 0;
for ( String name : names){
list.add(new Names(name));
count++;
}
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setHasFixedSize(true);
namesAdapter = new NamesAdapter(MainActivity.this, list);
recyclerView.setAdapter(namesAdapter);
}
Run Code Online (Sandbox Code Playgroud)
当单击 RecyclerView 项时,将一个芯片添加到 ChipGroup 中,这是功能
public void onItemSelected(Names name) {
Chip chip = new Chip(this);
chip.setText(name.getName());
chip.setCloseIconVisible(true);
chip.setCheckable(false);
chip.setClickable(false);
chip.setOnCloseIconClickListener(this);
chipGroup.addView(chip);
chipGroup.setVisibility(View.VISIBLE);
}
Run Code Online (Sandbox Code Playgroud)
从 ChipGroup 获取值的函数
public void getChipGroupValues(){
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ChipGroup chipGroup = findViewById(R.id.chipGroup);
for (int i=0; i<chipGroup.getChildCount();i++){
Chip chip = (Chip)chipGroup.getChildAt(i);
Log.i("outside if ", i+ " chip = " + chip.getText().toString());
if (chip.isChecked()){
Log.i("inside if ", i+ " chip = " + chip.getText().toString());
textView.setText(chip.getText().toString());
}
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
Gab*_*tti 17
从版本1.2.0开始,您可以使用该方法chipGroup.getCheckedChipIds()
List<Integer> ids = chipGroup.getCheckedChipIds();
for (Integer id:ids){
Chip chip = chipGroup.findViewById(id);
//....
}
Run Code Online (Sandbox Code Playgroud)
1.1.0 的旧答案:
目前没有直接的 API 来获取所选芯片。
但是,您可以遍历ChipGroup和 检查 的子项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.....
}
}
Run Code Online (Sandbox Code Playgroud)
我在 Kotlin 中使用的数据绑定解决方案
mBinding?.chipGroup?.children
?.toList()
?.filter { (it as Chip).isChecked }
?.forEach { //here are your selected chips as 'it' }
Run Code Online (Sandbox Code Playgroud)
这就是我获得头衔的方式
mBinding?.chipGroup?.children
?.toList()
?.filter { (it as Chip).isChecked }
?.joinToString(", ") { (it as Chip).text }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11281 次 |
| 最近记录: |