强制使用ValueEventListener Firebase

时间:2019-03-19 21:02:22

标签: java firebase firebase-realtime-database

我有一个ValueEventListener,我想在一个人每次加入房间时执行。该侦听器将更新会议室中的用户列表,并将这些用户显示在屏幕上。

问题是,在您已经加入会议室之后,返回主屏幕,然后又回到已经属于会议室的会议室中,由于数据库数据库未调用ValueEventListener不会更新,因为用户已经在房间里了。这也意味着,直到发生某些事情来更新数据库时,用户列表才会显示在屏幕上

我的问题是如何在不实际更新数据库的情况下强制ValueEventListener

这是我当前拥有的听众

gameRef.child(ID).addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        //updates the UI
        updateUI(new ListCallback() {
            @Override
            public void onCallback(List<String> value) {
                mAdapter.notifyDataSetChanged();
            }
        });
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
}); 

这是一个非常基本的侦听器,它调用如下所示的updateUI回调,然后更新我已设置为显示会议室成员列表的RecyclerViewActivity打开时如何强制调用?

这是我的updateUI回调

    public interface ListCallback {
    void onCallback(List<String> value);
}

public void updateUI(final ListCallback callBack) {
    gameRef.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull final DataSnapshot dataSnapshot) {
            getCurrentGame(new CurrentGameCallback() {
                @Override
                public void onCallback(String ID) {
                    memberList.clear();

                    for(DataSnapshot ds : dataSnapshot.child(ID).child("Members").getChildren()) {
                        String memberName = ds.child("firstName").getValue().toString();
                        memberList.add(memberName);
                    }
                }
            });
            callBack.onCallback(memberList);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

membersList只是一个ArrayList,所有成员都在会议室中

0 个答案:

没有答案