【问题标题】:Firebase query does not display chatFirebase 查询不显示聊天
【发布时间】:2018-09-02 06:00:54
【问题描述】:

我有一个聊天应用程序的方法,一切似乎都可以正常运行,但每次我尝试输入内容时都没有弹出任何内容。

当用户登录时,onActivityResult 显示成功消息:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == SIGN_IN_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            Snackbar.make(activity_main, "Success. Welcome.", Snackbar.LENGTH_SHORT).show();
        }
        else {
            Snackbar.make(activity_main, "Error", Snackbar.LENGTH_SHORT).show();
            finish();
        }
    }
}

但是,它没有显示我的onCreate欢迎消息:

if(FirebaseAuth.getInstance().getCurrentUser() == null) {
    startActivityForResult(AuthUI.getInstance().createSignInIntentBuilder().build(), SIGN_IN_REQUEST_CODE);
}
else {
    Snackbar.make(activity_main, "Welcome " + FirebaseAuth.getInstance().getCurrentUser().getEmail(), Snackbar.LENGTH_SHORT);
    //Load content
    displayChat();
}

当输入消息时,也没有任何显示。我是不是查询不正确?

private void displayChat() {

    ListView listOfMessage = findViewById(R.id.list_of_message);

    Query query = FirebaseDatabase.getInstance().getReference();
    FirebaseListOptions<Chat> options = new FirebaseListOptions.Builder<Chat>()
            .setLayout(R.layout.list_item)
            .setQuery(query, Chat.class)
            .build();

    adapter = new FirebaseListAdapter<Chat>(options) {
        @Override
        protected void populateView(View v, Chat model, int position) {
            //Get reference to the views of list_item.xml
            TextView messageText, messageUser, messageTime;
            messageText = v.findViewById(R.id.message_text);
            messageUser = v.findViewById(R.id.message_user);
            messageTime = v.findViewById(R.id.message_time);

            messageText.setText(model.getMessageText());
            messageUser.setText(model.getMessageUser());
            messageTime.setText(DateFormat.format("dd-MM-yyyy (HH:mm:ss)", model.getMessageTime()));
        }
    };
    listOfMessage.setAdapter(adapter);
}

我的数据库似乎很好,输入没有错误:

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

【问题讨论】:

  • 显示你的数据库结构
  • @faiiziiawan 完成
  • 对不起,我不是说规则,我的意思是你如何在 firebase 数据库中存储数据
  • 只需通过 Firebase 电子邮件身份验证选项。

标签: android firebase firebase-realtime-database firebaseui


【解决方案1】:

您需要获取数据库的引用,然后对其进行查询:

final DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();

根据您的要求查询类似这样的内容:-

Query query = reference.child("Chat_room");
query.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists()) {
            // dataSnapshot is the "chat_room" node with all children 
            for (DataSnapshot issue : dataSnapshot.getChildren()) {
                // do something with the individual "issues"
            }
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

注意:-确保您的数据库已创建,您将聊天消息保存到数据库的结构对于您要检索和显示聊天的方式很重要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-20
    • 2017-06-01
    • 2016-08-17
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多