从没有事件监听器的数据库中获取价值

问题描述 投票:0回答:1

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

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。

android listview firebase firebase-realtime-database
1个回答
0
投票

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

DatabaseReference.addListenerForSingleValueEvent(new ValueEventListener() {

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

© www.soinside.com 2019 - 2024. All rights reserved.