java - Android RecyclerView 和 CheckableTextView 检查 Bug
问题描述
我有一个包含 RecyclerView 和 CheckableTextViews 的 recyclerview 活动。列表中有 15 个元素,它是可滚动的。我使用 RecyclerView Adapter 来填充列表,写入 textviews 并监听 click 事件,然后我使用 click 事件来切换复选框状态。到目前为止,一切都按预期工作。但是当我检查其中一项并向下滚动和备份时。我看到该元素未选中,然后其他元素之一自行检查。每次我上下滚动时,都会检查其他一些元素。我找不到有关此问题的任何信息。
解决方案
我现在将复选框状态作为参数发送到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);
}
}
推荐阅读
- node.js - 在 MacOs 上创建目录“/dotenv”,只读文件系统
- javascript - 如何使用 JS 函数内部的 setTimeout 减慢列表的输出
- c# - 如何呈现读取 Visio 文件的图形
- flutter - 解压文件中的问题 - 内存不足
- html - Swiper JS轮播不适合Bootstrap 4 col
- python - 如何制作 Django 嵌套模板以获得更好的 SRP
- c# - MRTK 错误:未实现抽象成员 'InputSystemGlobalHandlerListener.UnregisterHandlers()
- c# - 火力基地动态链接
- php - laravel 文件系统返回数据字符串而不是视频
- c - Char Driver Linux:file_operations读写的正确实现是什么?需要进行哪些偏移检查?