を使用して Android アプリケーションを開発していListView
ます。この中のすべてのアイテムにListView
はcheckbox
.
ユーザーがいずれかをクリックすると、すべての項目のチェックを外そうとしています。たとえば、ListView
2 つの項目0, 1を持つ a 。
この時点で 0 が選択され、ユーザーはアイテム 1 をタップします。アイテム 0 の選択を解除したいです。
これは私のコードです。の中にありArrayAdapter
ます。
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
View row = convertView;
if (row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(itemLayoutId, parent, false);
}
Gate gate = gates.get(position);
if (gate != null)
{
TextView itemText = (TextView)row.findViewById(R.id.gateNameText);
if (itemText != null)
itemText.setText(gate.getName());
ImageView imageView =
(ImageView)row.findViewById(R.id.gateTypeImage);
int resId;
switch (gate.getSelTypeOperation())
{
case 0:
resId = R.drawable.garage;
break;
case 1:
resId = R.drawable.pulse;
break;
case 2:
resId = R.drawable.onoff;
break;
default:
resId = R.drawable.garage;
break;
}
imageView.setImageResource(resId);
CheckBox checkBox =
(CheckBox)row.findViewById(R.id.gateSelectedCheck);
if (checkBox != null)
{
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked)
{
// Solo hago algo si el nuevo estado es marcado.
if (isChecked)
for(int i = 0; i < gates.size(); i++)
{
if (i != position)
{
Log.v("GatesAdapter", "uncheck: " + position);
View view = getView(i, null, null);
CheckBox checkBox =
(CheckBox)view.findViewById(R.id.gateSelectedCheck);
checkBox.setChecked(false);
}
}
}
});
checkBox.setChecked(selectedGateIndex == position);
}
}
return row;
}
しかし、うまくいきません。
私は何を間違っていますか?