【发布时间】:2012-05-18 18:41:24
【问题描述】:
我有一个自定义ListView,点击一个项目会触发一个新的Activity。
ListView 的每一行都有一个CheckBox 和一个TextView。
这是我自定义的ListView 中的getView 方法:
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 回来时被调用,没有可能的用户交互来实际检查任何内容。
关键是过去工作正常,并没有真正改变任何东西。我已经read 说这是一个错误,但我不敢相信。
它总是在ListView 的相同两项上调用该方法。可以以某种方式将它们设置为checkedChange=true 吗?
【问题讨论】: