ListView随机选择CheckBoxes onItemClick

时间:2012-08-20 19:25:28

标签: android listview

我有一个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); 
}
}
}); 

1 个答案:

答案 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;

}

}