【发布时间】:2018-08-20 05:19:56
【问题描述】:
当我在 android ListView, RadioButton 中向下滚动时无法选择。我在 set change check listener 上应用 set selected true ,不工作,需要帮助。提前谢谢。
我使用了一个自定义适配器,它使用了 4 RadioButton 并设置了 mcq answer option 。 50 mcq 但在ListView 中滚动时比未选择上一个项目。自动刷新。任何人都可以建议我该怎么做。
公共类 ModeltestDetailsAdapter 扩展 ArrayAdapter {
private final Context context;
private final List<AllData> values;
public static ArrayList<String> selectedAnswers;
public ModeltestDetailsAdapter(Context context, List<AllData> values) {
super(context, R.layout.list_details_modeltest, values);
this.context = context;
this.values = values;
selectedAnswers = new ArrayList<>();
for (int i = 0; i < values.size(); i++) {
selectedAnswers.add("Not Attempted");
}
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// urveyDataHelper mDbHelper = new SurveyDataHelper(context);
final ViewGroup p;
p = parent;
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View rowView = inflater.inflate(R.layout.list_details_modeltest, parent, false);
TextView questions = (TextView) rowView.findViewById(R.id.questions);
TextView answer = (TextView) rowView.findViewById(R.id.ans);
final RadioGroup radioGroup = (RadioGroup) rowView.findViewById(R.id.radiogroup);
RadioButton radioButton;
String result;
final RadioButton optiona= (RadioButton) rowView.findViewById(R.id.optiona);
final RadioButton optionb= (RadioButton) rowView.findViewById(R.id.optionb);
RadioButton optionc= (RadioButton) rowView.findViewById(R.id.optionc);
RadioButton optiond= (RadioButton) rowView.findViewById(R.id.optiond);
questions.setText(values.get(position).getQues());
answer.setText(values.get(position).getAns());
optiona.setText(values.get(position).getOpt_one());
optionb.setText(values.get(position).getOpt_two());
optionc.setText(values.get(position).getOpt_three());
optiond.setText(values.get(position).getOpt_four());
optionc.setChecked(true);
optiona.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// set Yes values in ArrayList if RadioButton is checked
if (isChecked) {
optiona.setChecked(true);
//notifyDataSetChanged();
Toast.makeText(
context,
"Answer is ." + buttonView.getText().toString(),
Toast.LENGTH_LONG).show();
if (values.get(position).getAns().equals(buttonView.getText().toString())) {
selectedAnswers.set(position, "Correct");
} else {
selectedAnswers.set(position, "Wrong");
}
}else {
optiona.setChecked(false);
}
}
});
optionb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// set Yes values in ArrayList if RadioButton is checked
if (isChecked) {
optionb.setChecked(true);
// notifyDataSetChanged();
Toast.makeText(
context,
"Answer is ." + buttonView.getText().toString(),
Toast.LENGTH_LONG).show();
if (values.get(position).getAns().equals(buttonView.getText().toString())) {
selectedAnswers.set(position, "Correct");
} else {
selectedAnswers.set(position, "Wrong");
}
}
else {
optionb.setChecked(false);
}
}
});
questions.setTag(position);
answer.setTag(position);
optiona.setTag(position);
optionb.setTag(position);
optionc.setTag(position);
optiond.setTag(position);
//radioButton.setTag(position);
optiona.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final int pos = (Integer) v.getTag();
optiona.setChecked(true);
optiona.setSelected(true);
((ListView) p).performItemClick(v, pos, 0);
}
});
answer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final int pos = (Integer) v.getTag();
((ListView) p).performItemClick(v, pos, 0);
}
});
questions.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final int pos = (Integer) v.getTag();
((ListView) p).performItemClick(v, pos, 0);
}
});
return rowView;
}
}
【问题讨论】:
标签: android listview checkbox radio-button android-radiobutton