web-dev-qa-db-ja.com

チップグループから選択したチップを取得する方法

私はインターネット上でたくさん検索しますが、正確な解決策が見つかりませんでした。これが私が最後に試したリンクです。 チップグループから選択されたチップを取得

ボタンをクリックすると、チップグループから選択したチップを取得したいです。

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);
}
 _

Recyclerview項目をクリックすると、1つのチップが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);
}
 _

これはチップグループでチップを表示するイメージです

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());
                }
            }
        }
    });
}
 _

これは出力されますenter image description here

build.gradle(module.app)詳細enter image description here

6
msayubi76

データバインディングでコトリンで使用した溶液

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

そしてここで私は単なるタイトルを得た方法です

mBinding?.chipGroup?.children
            ?.toList()
            ?.filter { (it as Chip).isChecked }
            ?.joinToString(", ") { (it as Chip).text }
 _
0
Rainmaker