2017-05-28 11 views
0

私の問題は、複数のチェックボックスを備えたチェックリストを作成したいということです。最大の問題は100以上のチェックボックスがあることです。クリックしてすべてのチェックボックスをクリアするCLEARボタンが必要です。Android複数のチェックボックスのチェックを外す

どうすればいいですか?それを解決する方法の例がありますか?

私が知っている唯一の方法はあること:あなたは、単一のViewGroupにすべてのチェックボックスを維持している場合は

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でビューを見つけることができます。 2番目のオプションは、ViewGroupの中に何らかの並べ替えをして、それらをforループで反復し、getChildAt(i)で親から取得することです。 – Tuby

+2

レイアウト** getChildCount()**内で子の数を取得し、ビューがチェックボックスのインスタンスとリセット。 –

+0

もし100以上のチェックボックスを使うと、リストビューやリサイクルビューを同じものに使うのはなぜですか? – Pavan

答えて

0

ことができますそのViewGroupのすべての子を取得してチェックを外すことで行うことができます。たとえば、 'parent'はすべてのチェックボックスを含むレイアウトです。すべてのチェックボックスをオフにすることができます:

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

私はそれを解決しました。 getChildCount()というアイデアのために@Tubyと@android_hubに感謝します。
@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に設定されました。

関連する問題