2017-05-28 159 views
0

我的問題是我想創建一個帶有多個複選框的清單。最大的問題是我有超過100個複選框。我想要一個CLEAR按鈕,通過單擊清除所有複選框。Android取消選中多個複選框

我該怎麼做?並且你有一個例子如何解決它?

我所知道的唯一方法是:

Button clear = (Button) findViewById(R.id.clearbtn); 
    clear.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      CheckBox cb1 = (CheckBox) findViewById(R.id.checkBox2); 
      cb1.setChecked(false); 
     } 
    }); 

但是這樣真的心不是擁有超過100複選框有效...

+0

我會讓他們使用chechBox1,checkBox99等「checkBox [i]」的id命名,然後在for循環中循環遍歷它們,通過id查找具有當前迭代次數的視圖。第二種選擇是將它們放置在某種ViewGroup中,然後它們在for循環中迭代並使用getChildAt(i) – Tuby

+2

從父項獲取它們,您可以在佈局中獲取子數** getChildCount()**並檢查視圖是否複選框實例並重置。 –

+0

我想如果更多的100複選框爲什麼你不使用listview或回收視圖相同 – Pavan

回答

0

如果您把所有的複選框單的ViewGroup話,就通過獲得該ViewGroup的所有孩子並取消選中來完成。例如'parent'是包含所有複選框的佈局。您可以取消全部清除:

for (int i = 0; i < parent.getChildCount(); i++) { 
     View view = parent.getChildAt(i); 
     if (view instanceof CheckBox) { 
      ((CheckBox) view).setChecked(false); 
     } 
    } 
0

我已經解決了。感謝@Tuby和@android_hub的想法getChildCount()
特別感謝@Hammad Akram。現在它工作:D。我的代碼現在:

final LinearLayout ll = (LinearLayout)findViewById(R.id.ll_a320_main); 
    final int ccount = ll.getChildCount(); 

    Button clear = (Button)findViewById(R.id.btn_a320_clear); 
    clear.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //Toast.makeText(ACT_A320.this, "Child: "+ccount,Toast.LENGTH_LONG).show(); -- Test for checking count of Child 
      for(int i=1; i<ccount;i++){ 
       v = ll.getChildAt(i); 
       if(v instanceof CheckBox){ 
        ((CheckBox) v).setChecked(false); 
       } 
      } 
     } 
    }); 

現在所有複選框都會被檢測到並設置爲false。

相關問題