如果选中任何项目,则始终检查ListView中的复选框最后一项

时间:2013-12-18 06:55:41

标签: android listview checkbox android-listview android-checkbox

我有ListView个选项,我检查/选择要回答问题的项目并将所选选项放在自定义数组类(Options)中并将其传递给{{1活动。例如:我的Confirmation

中有4个选项
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; } } 活动中。我有预感导致这个错误,然而,这只是一个预感。

0 个答案:

没有答案