2012-03-28 11 views
1

私の特定のアプリケーションでは、チェックボックスと同様に、ラジオボタンをタッチしてオンとオフを切り替えることができます。しかし、私はラジオボタンがグループ内で互いに排他的である必要があります。 64個のボタンと8個のグループがありますので、チェックボックスを使用してトグル機能を手動でプログラムしたくありません。ラジオボタンでonTouchListener()を使用できますか?これを達成する方法はありますか? サポートをご利用いただきありがとうございます。RadioButton-CheckBox Combo

+0

ラジオボタンは、その定義によって、グループ内で相互に排他的です。あなたがここで何を求めているのか分かりません。 – Squonk

+0

ラジオボタンに触れ、チェックボックスのようにチェックを外したいと思っています。 – Cameron

+0

しかし、ラジオボタングループを使用する場合は、常に1つまたは他のボタンが有効になっているはずです。ボタンを有効にしない正しい方法は、そのグループ内に「選択なし」または同様のものと呼ばれるラジオボタンを追加することです。 – Squonk

答えて

1

あなたはチェックボックスでもラジオボタンでもないUIパラダイムを探しています。あなたの最善の策は、チェックボックスを使って、その上に相互排他性を実装することです。例えば、他の、より複雑な答えはになり

if (isChecked) { 
     int myGroup = (Integer) buttonView.getTag(); // Define the group in the view's tag 
     for (int id: groups.get(myGroup)) { 
     if (id != buttonView.getId()) ((CompoundButton) findViewById(id)).setChecked(false); 
    } 

あなたはグループごとにボタンIDのすべてを列挙することができれば、あなたのような、一般的にコードを書くことができ

myCheckbox1.setOnCheckChangedListener(new OnCheckChangedListener() { 
    @Override 
    public void onCheckChanged(CompoundButton buttonView, boolean isChecked) { 
    if (isChecked) { 
     myCheckbox2.setChecked(false); 
     myCheckbox3.setChecked(false); 
     myCheckbox4.setChecked(false); 

     // start playback 
    } else { 
     // stop playback 
    } 
    } 
); 

注意、独自のUIウィジェットを作成し、必要なセマンティクスを与えます。それは私がここで説明できるものの範囲ではありません。

+0

私は非常に助けていただきありがとうございますが、私が述べたように、私は8つのグループに64のボタンを配布しています。手動で行うのは非常に不便です。 – Cameron

+0

手動で行う必要はありません。配列内にボタンがある場合は、選択したボタン以外のすべてをオフにすることができます。それは数行のコードです。あなたがラジオボタンから見ているものを手に入れることはありません。 –