我有ListView
个选项,我检查/选择要回答问题的项目并将所选选项放在自定义数组类(Options
)中并将其传递给{{1活动。例如:我的Confirmation
ListView
(每次选中一个复选框时,我都会增加Question: What is your favorite color?
[] Red
[] Green
[] Blue
[] Yellow
这是一个全局变量。每次取消选中一个复选框,checkCounter
都会递减。)
示例方案:
我检查选项蓝色和黄色并将其提交到下一个活动(checkboxCounter
),Confirmation
现在 2 但是我想更改我的答案,所以我回到{ {1}}活动,但在我的日志中,checkboxCounter
为+1或递增为1.最终Answer
现在 3 ,我不知道哪里出错了或者如果它重用了全局变量checkboxCounter
。
这是我的代码:
checkboxCounter
注意:
此checkboxCounter
课程位于我的private class OptionAdapter extends ArrayAdapter<Option> {
Context context;
int layoutResourceId;
OptionHolder holder;
Option data[] = null;
public OptionAdapter(Context context, int layoutResourceId, Option[] data) {
super(context, layoutResourceId, data);
this.context = context;
this.layoutResourceId = layoutResourceId;
this.data = data;
}
private class OptionHolder {
CheckBox optionCheckBox;
TextView optionTextView;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View row = convertView;
holder = null;
final Option optionItem = data[position];
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new OptionHolder();
row.setTag(holder);
} else {
holder = (OptionHolder) row.getTag();
}
holder.optionCheckBox = (CheckBox) row.findViewById(R.id.option_checkbox);
holder.optionTextView = (TextView) row.findViewById(R.id.option_text);
holder.optionCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if(isChecked){
checkboxCounter++;
optionItem.checkFlag = true;
} else{
checkboxCounter--;
optionItem.checkFlag = false;
}
arrayOptions[position] = new Option(optionItem.id, optionItem.option, optionItem.questionId, optionItem.questionType, optionItem.checkFlag);
}
});
//This is for the checking when I'm from Confirmation activity
//If optionItem.checkFlag is true, check the checkbox in this position or index
//Otherwise, else
if (optionItem != null) {
holder.optionTextView.setText(optionItem.option);
if (optionItem.checkFlag) {
holder.optionCheckBox.setChecked(true);
} else {
holder.optionCheckBox.setChecked(false);
}
}
return row;
}
}
活动中。我有预感导致这个错误,然而,这只是一个预感。