有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在Android文本视图中显示来自Firebase的消息列表?

我在Firebase中有一个非常简单的数组,如下所示:

Firebase Array

我希望能够在textview中显示这些消息,并在数组中添加新消息时添加到textview。显示消息的代码如下所示:

        myFirebaseRef.child("messages").child("message").addValueEventListener(new ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot snapshot) {
            GenericTypeIndicator<List<String>> t = new GenericTypeIndicator<List<String>>() {};
            List<String> messages = snapshot.getValue(t);
            if( messages == null ) {
                System.out.println("No Messages");
            }
            else {
                for(int i = 0; i < messages.size(); i++) {
                    messageDisplay.setText(messageDisplay.getText() + "\n" + messages.get(i) + "\n");
                }
            }
        }

这没有按预期工作,我在GenericTypeIndicator上遇到“无法跳转到类型”异常。知道我哪里出错了吗


共 (1) 个答案

  1. # 1 楼答案

    在你看来像是一个数组,在Firebase看来像是一个关联数组。这种差异很微妙,但很重要,因为这意味着无法将JSON反序列化为List<String>。相反,if应该是一个Map<String,String>

    但以下方法更简单、更好:

    public void onDataChange(DataSnapshot snapshot) {
        if (snapshot.getChildrenCount() == 0) {
            System.out.println("No Messages");
        } 
        else {
            for (DataSnapshot messageSnapshot: snapshot.getChildren()) {
                String message = messageSnapshot.getValue(String.class);
                messageDisplay.setText(messageDisplay.getText() + "\n" + message + "\n");
            }
        }
    }