Androidでチップを扱うのは初めてです。ボタンをクリックしたときに、ChipGroup から選択したチップを取得したいと考えています。Made は、すべての Chip をチェックして Set に追加することで何らかの作業を行いますが、より効率的にしたいと考えています。どういうわけか、私は自分の質問に対する答えを自分で見つけられませんでした。
2 つの Chips をチェックし、最初にチェックしたチップのチェックを外したときにもエラーが発生します。
ここに私のコード:
<com.google.android.material.chip.ChipGroup
android:id="@+id/chipGroup"
android:layout_width="300dp"
android:layout_height="wrap_content"
>
<com.google.android.material.chip.Chip
android:id="@+id/chip1"
style="@style/Widget.MaterialComponents.Chip.Filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
android:backgroundTint="#99FFFFFF"
/>
<com.google.android.material.chip.Chip
android:id="@+id/chip2"
style="@style/Widget.MaterialComponents.Chip.Filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2"
android:backgroundTint="#99FFFFFF"/>
<com.google.android.material.chip.Chip
android:id="@+id/chip3"
style="@style/Widget.MaterialComponents.Chip.Filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3"
android:backgroundTint="#99FFFFFF"/>
<com.google.android.material.chip.Chip
android:id="@+id/chip4"
style="@style/Widget.MaterialComponents.Chip.Filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="4"
android:backgroundTint="#99FFFFFF"/>
<com.google.android.material.chip.Chip
android:id="@+id/chip5"
style="@style/Widget.MaterialComponents.Chip.Filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5"
android:backgroundTint="#99FFFFFF"/>
</com.google.android.material.chip.ChipGroup>
Set<Integer> chipIds = new HashSet<>();
int chip1Id= 1;
int chip2Id= 2;
int chip3Id= 3;
int chip4Id= 4;
int chip5Id= 5;
chip1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
chipIds.add(chip1Id);
} else {
for (int i : chipIds) {
if (i == chip1Id) {
chipIds.remove(i);
}
}
}
}
});
chip2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
chipIds.add(chip2Id);
} else {
for (int i : chipIds) {
if (i == chip2Id) {
chipIds.remove(i);
}
}
}
}
});
chip3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
chipIds.add(chip3Id);
} else {
for (int i : chipIds) {
if (i == chip3Id) {
chipIds.remove(i);
}
}
}
}
});
chip4.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
chipIds.add(chip4Id);
} else {
for (int i : chipIds) {
if (i == chip4Id) {
chipIds.remove(i);
}
}
}
}
});
chip5.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
chipIds.add(chip5Id);
} else {
for (int i : chipIds) {
if (i == chip5Id) {
chipIds.remove(i);
}
}
}
}
});