从没有EvenListener的数据库中获取价值

时间:2017-12-18 13:54:50

标签: android listview firebase firebase-realtime-database

如何从数据库中获取某些值,但每次数据库更改时都不刷新此数据,这是我的空白:

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();
        }
    });
}

我调用它时工作正常,但只要数据库发生更改就会触发它。我认为是因为空洞onDataChangeValueEventListener

如果有其他方法可以调用DataSnapshot,我就会徘徊。

1 个答案:

答案 0 :(得分:0)

要仅从数据库中读取数据一次并且未收到更新通知,请使用addListenerForSingleValueEvent注册您的监听器。所以:

DatabaseReference.addListenerForSingleValueEvent(new ValueEventListener() {

Firebase documentation on reading data from the database中解释了这一点以及更多内容。