ユーザーが5つのチェックボックスをチェックし、リストビューで他のチェックボックスを無効にするか非表示にするように制限する必要がある画像とチェックボックスを含むリストビューがありました。
3 に答える
イテレータを使用してすべてのチェックボックスのステータスを確認する必要があるため、カウンタ変数でこれを行うことができます。または、チェックボックスのクリックイベントを入力して、制限に達したかどうかを確認し、5番目のチェックボックスをオンにしてから無効にします。別のチェックボックスとそれより少ない場合は、チェックボックスのリセットを有効にします
ユーザーが5つ以上を選択できないようにするだけの場合-つまり、手動でアイテムのチェックを外す必要がある場合-pratikが提案したようなカウンター変数を使用してください。ユーザーがチェックした最も古いもののチェックを自動的に外したい場合は、選択したインデックスのキューを使用します。次に、最も古いものをポップしてチェックを外し、新しいインデックスをキューに追加できます。これはすべて onItemClickListener または onItemSelectedListener で行うことができます
onCheckedChangeListener を使用できます。
プライベート整数を追加します。
private int checkedCounter;
それを初期化します。
checkedCounter = 0;
リスナーを設定します。
yourCheckbox = (CheckBox) findViewById(R.id.itsId);
yourCheckbox.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (checkedCounter == 5 && isChecked)
{
yourCheckbox.setChecked(false);
}
else if checkedCounter == 5 && !isChecked)
{
checkedCounter--;
}
else if (checkedCounter < 5)
{
(isChecked ? checkedCounter++ : checkedCounter--);
}
}
});
現在、このコードを実行できないため、条件を確認してください。実際には別の方法でも実行できます。5 つのボックスがチェックされている場合、他のボックスに対して setEnabled(false) メソッドを使用できます。