【问题标题】:Checks wrong checkbox on recyclerview检查recyclerview上的错误复选框
【发布时间】:2021-06-23 19:18:21
【问题描述】:

我有以下代码。如果复选框的名称在函数采用的“deneme”数组中,我希望选中该复选框。但是那些不输入'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);
    }}

【问题讨论】:

    标签: java android


    【解决方案1】:

    因为 ViewHolder 被回收(意味着它们在您滚动时被重复使用),您需要以任何一种方式显式设置复选框的状态(以便它更改 ViewHolder 之前的任何状态):

    if (deneme.contains(subjects.get(position).getCheckBoxSubject())) {    
        holder.checkBox.setChecked(true);
    } else {
        holder.checkBox.setChecked(false);
    }
    

    【讨论】:

    • 这是一个简单而完美的解决方案。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多