我有以下代码。如果复选框的名称在函数采用的"dename"数组中,我希望选中该复选框。但那些没有输入"if"的标记却很奇怪。上下滚动时有随机检查
public SubjectRecyclerViewAdapter(ArrayList<Subject> subjects, ArrayList<String> deneme) {
this.subjects = subjects;
this.deneme = deneme;
}
@Override
public void onBindViewHolder(@NonNull SubjectRecyclerViewAdapter.MyViewHolder holder, int position) {
holder.checkBox.setText(subjects.get(position).getCheckBoxSubject());
if (deneme.contains(subjects.get(position).getCheckBoxSubject())) {
holder.checkBox.setChecked(true);
}}
因为ViewHolder是回收的(意味着它们在滚动时被重复使用(,所以您需要明确设置复选框的状态(这样它就可以更改ViewHolder以前的状态(:
if (deneme.contains(subjects.get(position).getCheckBoxSubject())) {
holder.checkBox.setChecked(true);
} else {
holder.checkBox.setChecked(false);
}