如何从数据库中获取某些值,但每次数据库更改时都不刷新此数据,这是我的空白:
private void getUser() {
userInformationsList.clear();
DatabaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
FirebaseUser user = mAuth.getCurrentUser();
userID = user.getUid();
nameID = dataSnapshot.child("Users").child(userID).child("name").getValue(String.class);
Lat = dataSnapshot.child("Users").child(userID).child("Coordenates/Rute/Lat").getValue(String.class);
Lng = dataSnapshot.child("Users").child(userID).child("Coordenates/Rute/Lng").getValue(String.class);
DataSnapshot dS = dataSnapshot.child("Coordenate").child(Lat).child(Lng);
toolbar.setTitle(nameID);
for(DataSnapshot Ds : dS.getChildren()) {
Object key = Ds.getKey();
String StringKey = String.valueOf(key);
getname(StringKey);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(SearchActivity.this,"Error 404",Toast.LENGTH_SHORT).show();
}
});
}
我调用它时工作正常,但只要数据库发生更改就会触发它。我认为是因为空洞onDataChange
或ValueEventListener
。
如果有其他方法可以调用DataSnapshot,我就会徘徊。
答案 0 :(得分:0)
要仅从数据库中读取数据一次并且未收到更新通知,请使用addListenerForSingleValueEvent
注册您的监听器。所以:
DatabaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
Firebase documentation on reading data from the database中解释了这一点以及更多内容。