首页 > 解决方案 > Android RecyclerView 和 CheckableTextView 检查 Bug

问题描述

我有一个包含 RecyclerView 和 CheckableTextViews 的 recyclerview 活动。列表中有 15 个元素,它是可滚动的。我使用 RecyclerView Adapter 来填充列表,写入 textviews 并监听 click 事件,然后我使用 click 事件来切换复选框状态。到目前为止,一切都按预期工作。但是当我检查其中一项并向下滚动和备份时。我看到该元素未选中,然后其他元素之一自行检查。每次我上下滚动时,都会检查其他一些元素。我找不到有关此问题的任何信息。

标签: javaandroid

解决方案


我现在将复选框状态作为参数发送到ViewHolder并使用setChecked. 问题解决了。

class WorkerViewHolder extends RecyclerView.ViewHolder {
    private final CheckedTextView textViewRow;
    WorkerViewHolder(View v) {
        super(v);
        textViewRow = v.findViewById(R.id.textViewRow);
        v.setOnClickListener(v1 -> {
            Personnel p = (Personnel) v.getTag();
            textViewRow.setChecked(!textViewRow.isChecked());
            checklist[workers.indexOf(p)] = textViewRow.isChecked();
        });
    }
    void setLine(Personnel worker, boolean check) {
        textViewRow.getRootView().setTag(worker);
        textViewRow.setText(worker.Nick);
        textViewRow.setChecked(check);
    }
}

推荐阅读