Я не знаю, является ли это лучшим решением, но вы можете создать «менеджер» для своих флажков и запускать его всякий раз, когда по любому из них нажимают.
Для простоты я добавил менеджера в коде xml, но вы также можете свободно использовать setOnClickListener или setOnCheckedChangeListener .
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CheckBox1"
android:onClick="cbgroupmanager"
/>
...
<CheckBox
android:id="@+id/checkBox5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CheckBox5"
android:onClick="cbgroupmanager"/>
</LinearLayout>
Вам нужен ArrayList для итерации, чтобы вы могли устанавливать статус каждого флажка, когда бы ни нажимали на любой из них.
public class Q6910875 extends Activity
ArrayList<CheckBox> cb = new ArrayList<CheckBox>();
int CheckBoxNum = 5; //number of checkboxes
Iterator<CheckBox> itr ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
cb.add((CheckBox) findViewById(R.id.checkBox1));
cb.add((CheckBox) findViewById(R.id.checkBox2));
cb.add((CheckBox) findViewById(R.id.checkBox3));
cb.add((CheckBox) findViewById(R.id.checkBox4));
cb.add((CheckBox) findViewById(R.id.checkBox5));
itr = cb.iterator();
}
И здесь у нас есть наш менеджер, один итератор, который пропускает весь список, снимая отметку со всех, когда он достигает щелкнутого, проверяет!
public void cbgroupmanager(View v) {
CheckBox cbaux;
while(itr.hasNext()) {
cbaux = (CheckBox) itr.next(); // we need this because it returns a Object, and we need the setChecked, which is a CheckBox method.
Log.d("soa", "click");
if (cbaux.equals(v)) //if its the one clicked, mark it as checked!
cbaux.setChecked(true);
else
cbaux.setChecked(false);
}
Я также мог бы найти другое решение, связанное ниже, вы можете изменить тему вашего флажка, но у меня нет опыта работы с темами, поэтому я не могу помочь вам в этом подходе.
Можно ли изменить значок переключателя в группе переключателей Android