Не удается получить доступ к значению из вложенного Hashmap - PullRequest
0 голосов
/ 28 мая 2018

Извлечение этого набора данных из Firebase, и я не могу получить значение раздела user_description.

Данные Firebase

enter image description here

final DatabaseReference fb = FirebaseDatabase.getInstance().getReference();

    DatabaseReference complaint = fb.child("complaints");
    complaint.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot data) {

            for (DataSnapshot child : data.getChildren()) {
                Complaint complaint = child.getValue(Complaint.class);

                String key = complaint.complaint_description.keySet().toString();
                String desc= complaint.complaint_description.get(key).get("user_description");
                Log.v("ComplaintFragment", desc);

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.v("ComplaintFragment", databaseError);

        }

Получение ошибки:

    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.util.HashMap.get(java.lang.Object)' on a null object reference

Вот класс жалобы

public class Complaint implements Serializable  {

HashMap<String, HashMap<String, String>> complaint_description;
String complaint_id;
String complaint_subject;
String facility_name;
String facility_type;
boolean fixed;
int join_staff;
int join_student;
int join_total;
String location_area;
String location_floor;
String note;
boolean sent;
String user_id;

public Complaint() {
}

public Complaint(HashMap<String, HashMap<String, String>> complaint_description, String complaint_id, String complaint_subject, String facility_name, String facility_type, boolean fixed, int join_staff, int join_student, int join_total, String location_area, String location_floor, String note, boolean sent, String user_id) {

   //initialization
}

//set and get methods here

}

Что мне делать?Спасибо

1 Ответ

0 голосов
/ 28 мая 2018

Вы получаете нулевое значение, потому что ваша база данных неверна

вы обращаетесь к жалобам вашего основного дерева узлов

DatabaseReference complaint = fb.child("complaints");

, но вам нужен доступ к еще одному узлу, который является вашим идентификатором пользователя

DatabaseReference complaint = fb.child("complaints").child(uid);

помните, что UID может быть получен с FirebaseAuth

FirebaseAuth mAuth;

mAuth  = FirebaseAuth.getInstance();
String uid = mAuth.getCurrentUser().getUid();

, дайте мне знать, если эта работа

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