gpt4 book ai didi

android - 从 ChipGroup 中获取选定的 Chip

转载 作者:行者123 更新时间:2023-12-03 18:44:59 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to get selected chips from ChipGroup?

(5 个回答)


1年前关闭。




我是在 Android 中使用芯片的新手。
单击按钮时,我想从 ChipGroup 中获取选定的芯片。
Made 以某种方式检查每个 Chip 并将其添加到 Set 中,但希望使其更高效。不知何故,我自己没有找到我的问题的答案。

当我检查 2 Chips 并取消选中我检查的第一个 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);
}
}
}
}
});

最佳答案

这是我的解决方案:

  • 只是为了测试结果,我在 XML
  • 中添加了一个按钮
    <Button
    android:id="@+id/bShow"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/chipGroup"
    android:layout_margin="10dp"
    android:text="Show Checked"
    android:onClick="buttonPressed"/>
  • Java:仅用于测试,请确保包含:
  • import android.widget.Button;
    import android.widget.Toast;
    import android.view.View;
  • Java:添加以下代码
  • showResult = (Button) findViewById(R.id.bShow);
    showResult.setOnClickListener(new View.OnClickListener()
    {
    @Override
    public void onClick(View v) {
    String msg = "Chips checked are:";
    ChipGroup chg = findViewById(R.id.chipGroup);
    int chipsCount = chg.getChildCount();
    if (chipsCount == 0) {
    msg += " None!!";
    } else {
    int i = 0;
    while (i < chipsCount) {
    Chip chip = (Chip) chg.getChildAt(i);
    if (chip.isChecked() ) {
    msg += chip.getText().toString() + " " ;
    }
    i++;
    };
    }
    // show message
    Toast.makeText(getApplicationContext(),msg, Toast.LENGTH_LONG).show();
    }
    });

    关于android - 从 ChipGroup 中获取选定的 Chip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55905793/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com