如何在Android TextView中显示来自Firebase的消息列表?

时间:2016-01-24 23:27:43

标签: 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");
                }
            }
        }

这没有按预期工作,我得到一个&#34;未能反弹到键入&#34; GenericTypeIndicator上的异常。知道我哪里错了吗?

1 个答案:

答案 0 :(得分:1)

看起来像是一个数组,看起来像一个关联数组到Firebase。差异很微妙但很重要,因为这意味着您无法将JSON反序列化为List<String>。相反,如果应该是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");
        }
    }
}