【问题标题】:Get Value from Database without EvenListener在没有事件监听器的情况下从数据库中获取价值
【发布时间】:2017-12-18 13:54:50
【问题描述】:

我如何做一个 void 从数据库中获取一些值,但不要在每次数据库更改时刷新这些数据,这就是我所拥有的 void:

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

当我调用它时它工作正常,但每当数据库更改时它就会触发。我认为是因为 void onDataChangeValueEventListener

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

【问题讨论】:

    标签: android listview firebase firebase-realtime-database


    【解决方案1】:

    要只从数据库中读取一次数据而不收到更新通知,请使用addListenerForSingleValueEvent 注册您的侦听器。所以:

    DatabaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
    

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

    【讨论】:

    • 它不起作用,每次dat更改时仍然触发。
    • 这看起来很奇怪。 addListenerForSingleValueEvent“立即”触发当前值,然后停止监听。我从未见过它的工作方式与此不同,因此很可能是您设置它的方式。使用您共享的代码,每次调用 getUser 时都会调用 onDataChange
    • 因为我想在按下按钮时调用它,而不是在更改数据库时调用它。知道如何实施吗?
    猜你喜欢
    • 2014-10-25
    • 2015-02-13
    • 2017-03-30
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 2018-09-08
    • 1970-01-01
    相关资源
    最近更新 更多