2017-03-03 11 views
0

私は10個のチェックボックスを持っており、最大6個のチェックボックスを選択した後、残りのチェックボックスを無効にしたいと考えています。いくつかのチェックボックスを選択した後、チェックボックスを無効にするにはどうすればよいですか?

OnCheckChangedListenerを使用して問題を解決する方法を教えてください。

私は以下のようにコードを記述する場合、私は冗長なコードを減らすために行う必要がありますどのようにそれを10回

checkbox1.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

@Override 
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
    if (isChecked && numberOfCheckboxesChecked >= 6) { 
     checkbox1.setChecked(false); 
    } else { 
    } 
}}; 

を繰り返す必要がありますか?

+0

checkbox1.setOnCheckedChangeListener(new MyCheckboxChangeListener()); checkbox2.setOnCheckedChangeListener(new MyCheckboxChangeListener()); ... private static class MyCheckboxChangeListener implements OnCheckedChangeListener { private static int numberOfCheckboxesChecked; @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { if (numberOfCheckboxesChecked >= 6) { buttonView.setChecked(false); } else { numberOfCheckboxesChecked++; } } else { numberOfCheckboxesChecked--; } } } 

それとも、あなたの活動にインターフェイスを実装することができますがチェックボックスが選択されているかどうかを示します。 – UserSharma

+0

@UserSharma私に例がありますか?私は初心者です、私は本当に理解していない – hatched

答えて

0

あなたが代わりに匿名クラスの名前のクラスを作成することができます:あなたがするかどうかをチェックするために、ブールのリストを維持する必要が

public class MainActivity extends AppCompatActivity implements OnCheckedChangeListener { 

    ... 
    private int numberOfCheckboxesChecked; 
    ... 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     ... 
     checkbox1.setOnCheckedChangeListener(this); 
     checkbox2.setOnCheckedChangeListener(this); 
    } 

    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     if (isChecked) { 
      if (numberOfCheckboxesChecked >= 6) { 
       buttonView.setChecked(false); 
      } else { 
       numberOfCheckboxesChecked++; 
      } 
     } else { 
      numberOfCheckboxesChecked--;    
     } 
    } 

} 
+0

私はクラスを作成した後、私はちょうど私の活動での機能を実装する?? – hatched

+0

あなたが何を求めているのか分かりません。しかし、私が例示したアプローチは[入れ子クラス](https://www.tutorialspoint.com/java/java_innerclasses.htm)です。前述したように、このリスナーをアクティビティに実装することもできます。その場合、 'checkbox1.setOnCheckedChangeListener(this)'を使用し、あなたのアクティビティは 'onCheckedChanged'メソッドを持ちます。 – BMacedo

+0

ありがとう、私はそれを試してみます – hatched

関連する問題