【发布时间】:2018-10-26 03:23:16
【问题描述】:
我使用recyclerview、arraylist和firebase来获取和显示数据,但是数据被添加到列表中的次数太多了..
这是我的代码
database=FirebaseDatabase.getInstance();
mRef=database.getReference("SETS");
mRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot==null) return;
for(DataSnapshot userSanpshot : dataSnapshot.getChildren())
{
if(userSanpshot.child("DETAIL").getValue()==null) break;
single.Detail=userSanpshot.child("DETAIL").getValue().toString();
/~/
list.add(single);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
adapter.setItems(list);
这是我向 firebase 发送数据时的代码
Button sharebut=(Button)findViewById(R.id.usersend);
sharebut.setOnClickListener(
new FloatingActionButton.OnClickListener() {
@Override
public void onClick(View view) {
mDatabase.child("SETS").child(userId).child("DETAIL").setValue(detailText.getText().toString());
/~/
finish();
}
}
);
}
【问题讨论】:
-
添加 list.clear();作为 onDataChange 方法中的第一行
-
签出this。
-
@JinsonPaul 谢谢,它有效。但是当我重新启动应用程序时,列表会发生变化;所有数据更改为最新数据。
-
因为 addValueEventListener 总是蚀刻最新的数据,或者你指定的节点中存储的所有数据