android firebaseRecycleAdapter复选框

时间:2017-11-23 11:48:55

标签: android firebase firebase-realtime-database

我必须遵循以下问题:

我有一个带复选框的FirebaseRecyclerAdapter。它看起来像这样:

enter image description here

在您单击一行中的两个复选框之前,一切正常。在这种情况下:如果我点击listItem 3,那么就会发生这种情况:

enter image description here

它复制了上一个检查的列表项中的行为

负责此的代码是:

            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。这些所谓的东西似乎都不起作用。他们都给出了相同的结果

1 个答案:

答案 0 :(得分:0)

经过大量研究后,我发现在勾选方框后,应该拨打notifyItemChanged(position);而不是notifyDataSetChanged();