Android FireStore: получить пользовательский объект из HashMap - PullRequest
0 голосов
/ 20 декабря 2018

Я хотел бы хранить пользовательские данные в документе в 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...