2014-10-31 88 views
1

我在運行時創建複選框,但我不知道如何找到哪個複選框被選中,哪個未選中?這是代碼。檢查哪個複選框被選中/未選中android

for (String s : options) 
{ 
    chk = new CheckBox(this); 
    System.out.println(s); 
    chk.setId(i++); 
    chk.setText(s); 
    selected=s; 
    chk.setOnClickListener(new View.OnClickListener() { 
public void onClick(View v) { 
if (((CheckBox) v).isChecked()) 
    DisplayToast(selected); 
else 
    DisplayToast(selected); 
} 
}); 
lm.addView(chk); 
} 
+1

您可以簡單地將生成的CheckBox存儲在列表中。然後迭代並調用每個 – cYrixmorten 2014-10-31 15:25:29

+1

上的isChecked()你也可以迭代所有視圖的lm,檢查它們是否是'instanceof'複選框,將它們轉換爲CheckBox並檢查它們是否被檢查。 – 2014-10-31 15:27:18

回答

2

可以使用getId()方法得到的CheckBoxid ..

CheckBox checkBox = ((CheckBox) v); 

if (checkBox.isChecked()) 
{ 
    int checkBoxId = checkBox.getId(); // It will give you checked checkbox id.. 
    DisplayToast(selected); 
} 
else 
    DisplayToast(selected); 

更新:

要獲得所有複選框狀態,您必須迭代lm佈局的ChildViews

喜歡的東西,

for (int i = 0; i < lm.getChildCount(); i++) { 
    View v = lm.getChildAt(i); 
    if (v instanceof CheckBox) { 
     if (((CheckBox) v).isChecked()) 
     // Check Checkbox 
     else 
     // Unchecked Checkbox 
    } 
} 

注:我建議你可以使用onCheckedChangeListener代替View.OnClickListener()檢查 - 的CheckBox取消選中事件。 (但它是可選的,它也可以與OnClickListener一起使用)

+0

謝謝..它的工作.. – 2014-10-31 17:07:06

3

您應該使用onCheckedChangeListener來定義你的複選框選中是否:

chk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     if (isChecked) { 
      //checked 
     } else { 
      //not checked 
     } 
    } 
}); 
相關問題