【发布时间】:2016-03-18 01:05:58
【问题描述】:
我有一个RecyclerView,它在CardViews 上加载CheckBoxes。这是适配器。加载时很好。但是当我故意在RecyclerView 上检查一个项目时,CheckBox 会在某处随机检查。我怎样才能摆脱这个问题?这是我的适配器。提前致谢。
public class QuestionsAdapter extends RecyclerView.Adapter<QuestionsAdapter.QuestionsViewHolder> {
List<QuestionModel> Questions;
public Context context;
public QuestionsAdapter(Context context, List<QuestionModel> questions) {
this.Questions = questions;
this.context = context;
}
@Override
public QuestionsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.questions_card_view, parent, false);
return new QuestionsViewHolder(v);
}
@Override
public void onBindViewHolder(QuestionsViewHolder holder, final int position) {
holder.txtQuestionText.setText(Questions.get(position).QuestionText);
}
@Override
public int getItemCount() {
return Questions.size();
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}
public class QuestionsViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public RadioButton rbLike;
public RadioButton rbdisLike;
public RadioButton rbnoComment;
public TextView txtQuestionText;
public QuestionsViewHolder(View itemView) {
super(itemView);
rbLike = (RadioButton) itemView.findViewById(R.id.like);
rbdisLike = (RadioButton) itemView.findViewById(R.id.Dislike);
txtQuestionText = (TextView) itemView.findViewById(R.id.txtCardQuestion);
rbnoComment = (RadioButton) itemView.findViewById(R.id.NoComment);
rbnoComment.setOnClickListener(this);
rbdisLike.setOnClickListener(this);
rbLike.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.like:
rbLike.setChecked(true);
rbnoComment.setChecked(false);
rbdisLike.setChecked(false);
break;
case R.id.Dislike:
rbdisLike.setChecked(true);
rbnoComment.setChecked(false);
rbLike.setChecked(false);
break;
case R.id.NoComment:
rbnoComment.setChecked(true);
rbLike.setChecked(false);
rbdisLike.setChecked(false);
//do something
break;
default:
}
}
}
}
【问题讨论】:
-
您唯一需要更改的是默认情况。你必须在默认情况下添加逻辑,因为你会因为视图的回收而遇到这种问题。
标签: android checkbox android-recyclerview