我有一个复选框。它被设置为true或false,具体取决于任务是否完成(手动更改)。任务完成后,我希望textview标签改变frmo未完成,反之亦然。所以我有以下代码。当他们点击复选框时,onCheckedChanged方法会被触发。它选择设置字符串取决于它是正确的真或假。但它刚刚退出。我在日志或屏幕上没有错误,但是当我在onCheckedChanged方法中设置字符串后逐步执行该程序时,它只是完全退出getView方法。我不明白出了什么问题。在前几行中有一个小问题,如果框是真或假的话,设置的逻辑并不完全正确,但没关系,我可以解决这个问题。我无法理解为什么在点击复选框后我无法更新标签。任何帮助都会很棒。
final CheckBox statusView = (CheckBox)convertView.findViewById(R.id.statusCheckBox);
//statusView.setChecked(true);
if(toDoItem.getStatus().toString().compareTo(ToDoItem.Status.DONE.toString()) == 0)
statusView.setChecked(true);
else
statusView.setChecked(false);
// TODO - Must also set up an OnCheckedChangeListener,
// which is called when the user toggles the status checkbox
statusView
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
Log.i(TAG,"Entered onCheckedChanged()");
if(isChecked)
statusLabelValue = "Done";
else
statusLabelValue = "Not Done";
}
});
TextView statusLabel = (TextView)convertView.findViewById(R.id.StatusLabel);
statusLabel.setText(statusLabelValue);
答案 0 :(得分:2)
您必须在侦听器中更改textview的文本:
statusView
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
Log.i(TAG,"Entered onCheckedChanged()");
if(isChecked)
statusLabelValue = "Done";
else
statusLabelValue = "Not Done";
((TextView)(convertView.findViewById(R.id.StatusLabel))).setText(statusLabelValue);
}
});