让孩子从Firebase保持不变

时间:2018-11-02 18:14:05

标签: java android firebase firebase-realtime-database

在我的应用中,我想实现聊天功能。对于每个聊天,都会创建一个唯一的chatID,需要在启动时获取。我读过有关使用ListenerForSingleValueEvent()来获取dataSnapshot的信息,但似乎只有在数据更改时才能达到。我该如何从孩子那里获取数据而无需进行任何更改?

像这样,我没有得到我的chatID:

public class ChatActivity extends AppCompatActivity {

    String chatId;
    DatabaseReference mDatabaseUser, mDatabaseChat;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_chat);

        mDatabaseUser = FirebaseDatabase.getInstance().getReference().child("Users").child("ChatId");
        mDatabaseChat = FirebaseDatabase.getInstance().getReference().child("Chat");
        getChatId();
    }
 
    private void getChatId(){
        mDatabaseUser.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if (dataSnapshot.exists()){
                    chatId = dataSnapshot.getValue().toString();
                    mDatabaseChat = mDatabaseChat.child(chatId);
                }
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });
    }
}

1 个答案:

答案 0 :(得分:0)

您可以使用addValueEventListner方法从Firebase实时数据库获取值。

private void getChatId() { 
    DatabaseReference firebaseDatabaseReference = FirebaseDatabase.getInstance().getReference(dbPath);
    //dbPath is the path of the data stored in firebase required to receive
    firebaseDatabaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            //your code here
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

请参阅firebase documentation