因此,我在 Firebase 中有一个非常简单的数组,如下所示:
我希望能够在 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/