我必须遵循以下问题:
我有一个带复选框的FirebaseRecyclerAdapter。它看起来像这样:
在您单击一行中的两个复选框之前,一切正常。在这种情况下:如果我点击listItem 3,那么就会发生这种情况:
它复制了上一个检查的列表项中的行为
负责此的代码是:
listCheckbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("boxPosition", String.valueOf(position));
if (listCheckbox.isChecked()) {
Log.i("boxChecked", String.valueOf(position));
mDoneListRef.child(list_id).child("ticked").setValue(Boolean.valueOf(true));
} else if (!listCheckbox.isChecked()){
Log.i("boxChecked", String.valueOf(position));
mDoneListRef.child(list_id).child("ticked").setValue(Boolean.valueOf(false));
}
}
});
我发现只有在添加else if语句时才会发生这种情况。如果我只使用if语句的逻辑,那么一切都像预期的那样(execpt你不能将值设置为false,因为缺少else if / else语句)。
我认为else if语句有问题。所以,问题只会在添加else if语句时发生,并且您将两个复选框勾选到一行中的相同值。
我是否可能遗漏某些东西要打破循环或某些重置位置价值的东西?
编辑:我尝试了不同的onclickevents,在clickevent中创建并调用另一个databaseRefference。这些所谓的东西似乎都不起作用。他们都给出了相同的结果
答案 0 :(得分:0)
经过大量研究后,我发现在勾选方框后,应该拨打notifyItemChanged(position);
而不是notifyDataSetChanged();