我正在开发一个与firebase数据库一起工作的android应用程序,当用户将项目添加到数据库时,应用程序会实时显示它,这就是我想要的,但问题是同一个项目在recyclerview中显示了不止一次这是我尝试的代码
data = new ArrayList<>();
DatabaseReference myRef = FirebaseDatabase.getInstance().getReference().child("workers");
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
e_iv.setVisibility(View.GONE);
e_tv.setVisibility(View.GONE);
rv_all.setVisibility(View.VISIBLE);
for (DataSnapshot ds : snapshot.getChildren()) {
for (DataSnapshot d : ds.getChildren()) {
data.add(d.getValue(work.class));
}
}
mAdapter = new aAdapter(data);
rv_all.setAdapter(allGamesAdapter);
mAdapter.notifyDataSetChanged();
}
但它并不能解决这个问题,当我从应用程序中出来并再次输入它时,它的工作原理是完美的,并显示项目而不重复任何人,我如何解决这个问题?
1条答案
按热度按时间gywdnpxw1#
所发生的事情是,每当监听器返回数据时,arraylist就会得到添加的数据。要消除重复性,只需清除ondatachang()函数中的arrayList
希望你的错误得到解决。