我有一个ListView
,其中每个ListItem
的布局都有CheckBox
。当CheckBox
被激活并滚出可见区域时,它将被取消激活。我理解ListView
重用Views
,我必须在CheckBoxes
方法中保存getView()
的状态,但我有两个问题。
答案 0 :(得分:1)
您正尝试在String上调用setSelected。你需要在复选框上调用它。变量“list”是字符串的ArrayList。
在这两种情况下,您都试图在String类型上调用Checkbox方法。您需要在复选框上调用它们。
**编辑
您需要在getView中执行以下操作:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflator.inflate(R.layout.listitem, parent, false);
} else {
//you should change viewHolder to simply store a boolean, rather than the entire checkbox. It should just store whether or not the checkbox was checked.
viewHolder = new ViewHolder();
viewHolder.text = (TextView) convertView.findViewById(R.id.listcontent);
viewHolder.isChecked = ((CheckBox) convertView.findViewById(R.id.cb)).isChecked();
//do whatever else here
}
return convertView;
}