【发布时间】:2020-07-25 02:19:09
【问题描述】:
我正在尝试使用 addValueEventListner 在 ListView 中获取 Firebase 实时数据库中“学生”实例的所有子项。但是当我添加一个新条目时,它开始复制 ListView 中的先前条目(但不在实时数据库中),就像我已经成功上传了 8 个条目一样,当我尝试添加第 9 个条目时,它会复制 ListView 中的第一个条目和第 9 个没有.添加的条目并未全部显示。当我添加第 10 个条目时,它会复制 ListView 中的第 2 个条目,依此类推。它不显示第 8 次之后的下一个条目,并且与以前的条目重复。但在 Firebase 数据库中,一切正常。
这是我从 Firebase 数据库中检索数据的代码。
studentModelArrayList = new ArrayList<>();
allStudentsAdapter = new AllStudentsAdapter(ViewAllStudentsActivity.this, studentModelArrayList);
listView.setAdapter(allStudentsAdapter);
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
studentModelArrayList.clear();
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
StudentModel studentModel = postSnapshot.getValue(StudentModel.class);
studentModelArrayList.add(studentModel);
}
allStudentsAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(ViewAllStudentsActivity.this, databaseError.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
我已经应用了我所有的知识并在 StackOverflow 上浏览了所有相关的东西,我不知道我做错了什么。请帮忙。
【问题讨论】:
标签: firebase firebase-realtime-database duplicates