我在textview上使用onClickListener来复选框上的setCheck()并保存一个值,同时清除itemStateArray
中的最后一个检查项,这是一个SparseBooleanArray。代码正在执行,但未显示正在检查的复选框。
textView.setOnClickListener(v -> {
int adapterPosition = getAdapterPosition();
if (!itemStateArray.get(adapterPosition, false)) {
if (first) {
checkBox.setChecked(true);
first = false;
lastChecked = checkBox;
} else {
if (checkBox.isChecked() && lastChecked != null) {
lastChecked.setChecked(false);
checkBox.setChecked(true);
lastChecked = checkBox;
}
}
itemStateArray.clear();
itemStateArray.put(adapterPosition, true);
} else {
checkBox.setChecked(false);
itemStateArray.clear();
itemStateArray.put(adapterPosition, false);
}
});
我在textview上设置了监听器,因为我想点击较大的textview,而不是屏幕一侧的较小复选框。
单击该项目并向下滚动并向上滚动后,该项目将显示为已选中。我正在设置onBindViewHolder中的复选框 使用以下代码:
holder.bind(position);
我传递已检查位置的绑定函数:
void bind(int position) {
if (!itemStateArray.get(position, false)) {
checkBox.setChecked(false);
} else {
checkBox.setChecked(true);
lastChecked = checkBox;
}
}
屏幕上不显示动画复选框。
答案 0 :(得分:1)
您正在使用listView / RecyclerView吗? 我认为实现这一目标的最佳方法是使用方法
告诉视图刷新该行recyclerView.notifyItemChanged(int)
其中int是切换che复选框的行的位置。