-1

我有一个 ListView,其中每个 ListItem 在其布局中保留一个 CheckBox。我希望在单击它们的 ListItems 时激活 CheckBoxes。问题是每当我单击 ListItem 时,复选框都会随机激活。例如:我点击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); 
}
}
}); 
4

1 回答 1

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;

}

}
于 2012-08-20T19:37:52.723 回答