我想在问题中添加单选按钮作为回答选项,但是必须在代码上添加这些单选按钮,因为选项的数量取决于每个项目。这些作为多选答案选项并不总是局限于一个选项,有时甚至可以更改为两个或多个选项。
我正在recyclerView中进行此操作,有没有一种方法可以添加它们而不需要加入无线电组,以便能够在需要时选择多个按钮?
答案 0 :(得分:0)
如果您不介意使用复选框,我可能会选择这种方法。
您可以引入Answer
模型类,并在Checkbox
的{{1}}上添加带有OnCheckedChangeListener
的{{1}}:
RecyclerView.Adapter
ViewHolder
创建答案列表后,可以将其传递到public class Answer {
private String text;
private boolean isChecked;
// Constructor, Getters, Setters
}
。
(有关如何更新数据的更多信息,请参阅官方documentation)
public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder> {
private static final int MAX_ANSWERS = 2;
private List<Answer> mData;
private Context context;
MyRecyclerViewAdapter(List<Answer> data, Context context) {
this.mData = data;
this.context = context;
}
// ...
static class ViewHolder extends RecyclerView.ViewHolder {
CheckBox checkAnswer;
TextView myTextView;
ViewHolder(View itemView) {
super(itemView);
checkAnswer = itemView.findViewById(R.id.check_answer);
myTextView = itemView.findViewById(R.id.txt_answer);
}
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Answer answer = mData.get(position);
holder.myTextView.setText(answer.getText());
holder.checkAnswer.setOnCheckedChangeListener((v, isChecked) -> {
answer.setChecked(isChecked);
// Notify adapter so that onBindViewHolder is called
notifyDataSetChanged();
});
// Check whether maximum number of answers is reached
if (mData.stream().filter(Answer::isChecked).count() >= MAX_ANSWERS) {
holder.checkAnswer.setEnabled(holder.checkAnswer.isChecked());
} else {
holder.checkAnswer.setEnabled(true);
}
}
// ...
}
每当提交答案时,您都可以过滤已检查答案的列表:
RecyclerView.Adapter
答案 1 :(得分:0)
您可以使用android的内置对话框轻松完成此操作。请参阅here是Android的官方文档。