【发布时间】:2012-11-22 09:25:42
【问题描述】:
我有一个 ListView 和一个 CheckBox 和一个 TextView 。在我的适配器getView() 方法中,我在复选框上实现了这个监听器。
holder.check.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
HashMap<String, String> localMap = (HashMap<String, String>) holder.check
.getTag();
if (holder.check.isChecked()) {
trackinglist.add(localMap.get("taskid"));
checkedlist.add(localMap.get("taskid"));
} else {
if (trackinglist.contains(localMap.get("taskid"))) {
trackinglist.remove(localMap.get("taskid"));
}
if (alreadycheckedlist.contains(localMap.get("taskid"))) {
undonelist.add(localMap.get("taskid"));
alreadycheckedlist.remove(localMap.get("taskid"));
} else {
checkedlist.remove(localMap.get("taskid"));
}
}
}
});
现在我的问题是 holder.check.isChecked() 总是返回 false 即使单击 CheckBox 并检查它。什么可能导致这种行为?是的,我不想使用 setoncheckchangelistener 。请帮忙。
【问题讨论】:
-
你为什么不直接使用View v?
-
我该怎么做?请给我一些例子。
-
@e7fendy 为什么这可能是问题?
-
当点击时,你会得到被点击的视图。您可以检查 holder.check 是否与 v 相同。如果不是,则 holder.check 可能已经过去(由于方向等)。最好直接使用View v,或者findviewbyid。
标签: android listview checkbox onitemclicklistener ischecked