Firebase数据库和GenericTypeIndicator

时间:2018-03-18 18:04:08

标签: android database firebase

查看了许多解决方案,似乎无法找到一个解决方案以将节点检索为数组

    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不适合我的目的

1 个答案:

答案 0 :(得分:0)

您正在混合使用Firebase客户端库SDK的版本。您可以通过在错误消息中看到这一点来判断:

com.firebase.client.GenericTypeIndicator

com.firebase来自过时的版本。你想要来自com.google.firebase的那些。从build.gradle中删除旧版SDK,我们只删除新版本。