我有一个习惯ListView
,点击一个项目会触发一个新的Activity
. 的每一行ListView
都有一个CheckBox
和一个TextView
。
这是getView
我自定义的方法ListView
:
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.puzzles_row, null);
}
ListedPuzzle lp = items.get(position);
if (lp != null) {
TextView title = (TextView) v.findViewById(R.id.listTitles);
title.setText(lp.getTitle());
CheckBox star = (CheckBox) v.findViewById(R.id.star_listed);
star.setChecked(lp.isStarred());
star.setTag(new Integer(position));
star.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
Integer realPosition = (Integer) buttonView.getTag();
ListedPuzzle obj = items.get(realPosition);
starListedPuzzle(obj.getId(), isChecked);
}
});
}
return v;
}
当onCheckedChanged
从另一个 Activty 返回时调用 ,而没有可能的用户交互来实际检查任何内容。
关键是它曾经工作得很好,并没有真正改变任何东西。我读过这是一个错误,但我真的不敢相信。
它总是在相同的两个项目上调用方法ListView
。他们可以以checkedChange=true
某种方式设置吗?