Android Firestore:从HashMap检索自定义对象

时间:2018-12-20 19:02:40

标签: java android hashmap google-cloud-firestore

我想将用户数据存储在Firestore中的文档中。为此,我正在使用HashMap:

                String userID = mAuth.getCurrentUser().getUid();
                    User user = new User(stringMail, stringUsername, stringGender, stringBirthday,
                            stringCountry, registeredOn);

                    HashMap<String, User> userHashMap = new HashMap<>();
                    userHashMap.put("userdata", user);

                    users.document(userID).set(userHashMap, SetOptions.merge())
                            .addOnSuccessListener(new OnSuccessListener<Void>() {
                        @Override
                        public void onSuccess(Void aVoid) {
                            Toast.makeText(RegisterActivity.this, "Upload completed to Firestore!", Toast.LENGTH_LONG).show();
                        }
                    }).addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            Toast.makeText(RegisterActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                        }
                    });
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(RegisterActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                }
            });

那很好。我确实在检索数据时遇到问题。由于数据存储在HashMap中,因此我无法使用以下代码:

String userID = mAuth.getUid(); 
users.document(userID).get() 
        .addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() { 
            @Override 
            public void onSuccess(DocumentSnapshot documentSnapshot) { 
                Map<String, Object> userHashMap = new HashMap<String, Object>(); 
                userHashMap = documentSnapshot.getData(); 
                User user = (User) userHashMap.get("userdata"); 

我也不能使用:

User user = documentSnapshot.toObject(User.class);

所以我想知道是否有人可以建议一种如何从HashMap检索自定义对象的方法?我还应该提到该文档将包含第二个HashMap。

0 个答案:

没有答案