获取Android中所选复选框的文本?

3

我在我的活动xml中有5个复选框。我需要获取所有选中复选框的文本。

一种方法是查看checkbox1是否被选中并获取文本。

    if(checkbox1.isChecked())
       { String text=checkbox1.getText().toString();}

等等,还有其他的方法。

这个过程变得相当冗长。

我能用其他方法吗?


看看这个链接,以获取一个想法 https://dev59.com/B1XTa4cB1Zd3GeqP5-EA#5541701 - Karthik S
@Nabin,你是在说切换开关吗? - WISHY
请按照我的答案进行操作,它会对您有所帮助。 - user2783702
你有得到答案吗?我也有同样的问题。 - coderpc
@PC。是的,您可以使用复选框的数组或列表,然后循环遍历它。 - WISHY
4个回答

4
一些基本的建议:
  1. You do not need to ==true operation above so a simple if(checkbox1.isChecked()) would suffice.

  2. Store them all in an ArrayList so you can iterate as below:

    List<CheckBox> items = new ArrayList<CheckBox>();
    for (CheckBox item : items){
           if(item.isChecked()) 
              String text=item.getText().toString();
    }
    

2
CheckBox[] nameString = new CheckBox[]{Array1, Array2, Array3, Array4, Array5, Array6, Array7, Array8};

for (int i=0; i<=7; i++)
{
    if (nameString[i].isChecked())
    {
       Toast.makeText(getApplicationContext(), nameString[i].getText().toString(), Toast.LENGTH_SHORT).show();
    }
}

请考虑添加一些解释。 - Sunil

1
与其循环遍历所有的复选框来查找哪一个被选中,你可以在 onCheckedChanged()onClick() 中简单地创建一个已选择项目的列表
If(unChecked)==>Add to List==> if(Checked) ==> Remove from list

0

Kotlin示例代码:

您可以创建一个事件并将同一事件绑定到所有复选框,例如

<CheckBox
    android:id="@+id/chk1"
    android:onClick="onCheckBoxClicked" ....


<CheckBox
    android:id="@+id/chk2"
    android:onClick="onCheckBoxClicked" ....

主活动:

  fun onCheckBoxClicked(view:View){
    view as CheckBox

    if (view.isChecked){
        var msg = view.text.toString()
        Log.d("Checkbox", msg)          //printing in log
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接