我正在从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);
}
});
答案 0 :(得分:0)
如果您添加多个侦听器,则会发生这种情况,例如,如果您在Activity的OnCreate
方法中添加了侦听器,则会发生这种情况。并且您多次打开和关闭活动,ValuesEventListener
将被多次添加。如果是这种情况,那么您需要在Activity的onStop
方法中以这种方式删除监听器
group_refrence.removeEventListener(your_listener);