在更新或插入后,firebase addValueEventListener导致重复数据

时间:2019-07-17 13:42:38

标签: android firebase

我正在从fire-base中获取创建的组,但还可以,但是当其他人在同一棵树中创建新组时,数据会重复多次并使用recyclerview填充到ui中。

我尝试覆盖onChildAdded方法以获取值的更新列表,但没有任何作用,我也尝试在进行火力基地电话之前清除孔列表。

多次返回重复的值

final DatabaseReference group_refrence = root_refrence.child("Chatts").child("Groups");
        group_refrence.addValueEventListener(new ValueEventListener() {
            @SuppressLint("LongLogTag")
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                swipeRefreshLayout.setRefreshing(false);
                Set<String> set = new HashSet<>();
                Iterator iterator = dataSnapshot.getChildren().iterator();
                while (iterator.hasNext()) {
                    set.add(((DataSnapshot) iterator.next()).getKey());
                }

                list_of_Group.addAll(set);
                if (list_of_Group.isEmpty()) {
                    no_goroup.setVisibility(View.VISIBLE);
                    Log.e("group soze", String.valueOf(list_of_Group.size()));
                }
                setAdapter(list_of_Group);


            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                no_goroup.setVisibility(View.VISIBLE);
                swipeRefreshLayout.setRefreshing(false);
            }
        });

1 个答案:

答案 0 :(得分:0)

如果您添加多个侦听器,则会发生这种情况,例如,如果您在Activity的OnCreate方法中添加了侦听器,则会发生这种情况。并且您多次打开和关闭活动,ValuesEventListener将被多次添加。如果是这种情况,那么您需要在Activity的onStop方法中以这种方式删除监听器

group_refrence.removeEventListener(your_listener);