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

标签 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 上收到“无法弹回键入”异常。知道我哪里出错了吗?

最佳答案

对您来说看似数组的东西,对 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");
        }
    }
}

关于java - 如何在 Android TextView 中显示来自 Firebase 的消息列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34982887/

相关文章:

java - Android:为什么我不能在新线程中创建处理程序

java - 从其他类调用方法时,输出未按预期输出

android - android中的数据库空指针异常

Firebase Cloud Functions 部署错误,错误代码为 "NoSuchKey"

IOS Web 浏览器上的 Firebase 消息传递

java - 以下 SQL 查询是否正确计算表中的多个字段

java - LinearLayout提供的onMeasure()参数

java - Android:BasicClientCookie/CookieStore 在 cookie 值周围添加引号

android - 地理围栏数据在转换时为空

javascript - AngularFireMessaging - 错误 this._next 不是函数