查看了许多解决方案,似乎无法找到一个解决方案以将节点检索为数组
mDatabase = FirebaseDatabase.getInstance().getReference("users");
mDatabase.child("users").child(auth.getUid());
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
GenericTypeIndicator<List<String>> t = new GenericTypeIndicator<List<String>>() {};
List<String> yourStringArray = dataSnapshot.getValue(t);
Log.w(TAG, "users array: " + yourStringArray);
}
在android studio中我在t:
上收到此错误Cannot resolve method'getValue(com.firebase.client.GenericTypeIndicator<java.util.List<java.lang.String>>)'
我的数据库结构:https://gyazo.com/9f2109d3d5c699329b74d6a6ed8279e8
使用getValue返回的替代解决方案,但无法转换为数组或列表...
mDatabase = FirebaseDatabase.getInstance().getReference("users");
mDatabase.child("users").child(auth.getUid());
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
collectData((Map<String, Object>) dataSnapshot.getValue());
Log.w(TAG, "users array: " + dataSnapshot.getValue());
}
public String collectData(Map<String, Object> value) {
for (Map.Entry<String, Object> entry : value.entrySet()) {
users.add((Map.Entry) entry);
}
return users.toString();
}
但我真的需要它作为数组,因为hashmap不适合我的目的
答案 0 :(得分:0)
您正在混合使用Firebase客户端库SDK的版本。您可以通过在错误消息中看到这一点来判断:
com.firebase.client.GenericTypeIndicator
com.firebase
来自过时的版本。你想要来自com.google.firebase
的那些。从build.gradle中删除旧版SDK,我们只删除新版本。