我有一个ListView,其中每个ListItem在其布局中保留一个CheckBox。我希望在单击其ListItem时激活CheckBoxes。问题是每当我点击ListItem时,随机激活CheckBoxes。例如:我单击ListItem1并激活ListItem4的CheckBox。等等。我该如何防止这种情况?这是我的OnItemClickListener:
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.listitem, R.id.listcontent, valueslist);
lv = (ListView) findViewById(R.id.list);
lv.setAdapter(arrayAdapter);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
CheckBox cb = (CheckBox) findViewById(R.id.cb);
if (cb.isChecked() == false) {
cb.setChecked(true);
} else {
cb.setChecked(false);
}
}
});
答案 0 :(得分:1)
而不是这个
CheckBox cb = (CheckBox) findViewById(R.id.cb);
你应该使用
CheckBox cb = (CheckBox) view.findViewById(R.id.cb);
编辑: 声明如下所示的类,然后使用CArrayAdapter而不是ArrayAdapter。试试看。可能会工作
使用此
private class CArrayAdapter extends ArrayAdapter<String>{
public CArrayAdapter(Context context, int resource,
int textViewResourceId, String[] objects) {
super(context, resource, textViewResourceId, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
CheckBox cb =(CheckBox)findViewById(R.id.cb);
cb.setChecked(false);
return view;
}
}