Я не могу получить вложенный дочерний элемент из firebase через объект класса pojo - PullRequest
0 голосов
/ 01 мая 2019

Это моя таблица базы данных:

Database table

Я сохраняю некоторую информацию о пользователе в Firebase через класс POJO во время установки, например имя, фотографию, номер телефона.Позже в приложении пользователь может добавить доверенный контакт, который я добавляю, создавая вложенный дочерний элемент в той же пользовательской таблице, используя класс POJO.Мой вопрос заключается в том, как получить это значение доверенного контакта из firebase, т.е. contactname1, contactnumber1?

. Это мой класс POJO:

package com.example.fizatanveerkhan.citycops;

import java.util.HashMap;

public class UserInformation {

    private String uphone;
    private String uphoto ;
    private String uname;
    private String address;

    private String contactname1;
    private String contactnumber1;

    public UserInformation()
    {

    }

    public UserInformation(String phonenumber, String uphoto,String uname, String add, String cn1, String cb1)
    {
        this.uphone=phonenumber;
        this.uphoto=uphoto;
        this.uname= uname;
        this.address=add;
        this.contactname1=cn1;
        this.contactnumber1=cb1;
    }


    public void setUphone(String uphone) {
        this.uphone = uphone;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public void setUphoto(String uphoto) {
        this.uphoto = uphoto;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public void setContactname1(String contactname1) {
        this.contactname1 = contactname1;
    }

    public String getUphoto() {
        return uphoto;
    }

    public String getUphone() {
        return uphone;
    }

    public String getUname() {
        return uname;
    }

    public String getAddress(){return address;}

    public String getContactname1() {
        return contactname1;
    }


    public String getContactnumber1() {
        return contactnumber1;
    }


    public void setContactnumber1(String contactnumber1) {
        this.contactnumber1 = contactnumber1;
    }

}

.вложенный дочерний элемент в таблице пользователей с вложенными элементами contactname1: -----, contactname2 ----

public void upload()
    {

    firebaseDatabase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {


            UserInformation upload1 = new UserInformation();

        if(number1 != null )
        {  upload1.setContactnumber1(number1);
           if(name1 != null)
           {
               upload1.setContactname1(name1);
           }
          firebaseDatabase.child("TrustedContact1").setValue(upload1);
        }

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

}

И вот как я пытаюсь получить тост контакта, показывает имя пользователя n, но не имя контакта fromdbname1

firebaseDatabase= database.getReference("USERS").child(uid);


ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

        if (dataSnapshot.exists()) {

            current_user = dataSnapshot.getValue(UserInformation.class);
            String n = current_user.getUname();

            fromdbname1 = current_user.getContactname1();
            Toast.makeText(getApplicationContext(), fromdbname1, 
            Toast.LENGTH_LONG).show();
            Toast.makeText(getApplicationContext(), n, 
            Toast.LENGTH_LONG).show();

        }
    }
    @Override
    public void onCancelled (DatabaseError databaseError){
        Toast.makeText(getApplicationContext(), "Error Loading UserDetails", 
        Toast.LENGTH_LONG).show();
    }
};
firebaseDatabase.addListenerForSingleValueEvent(eventListener);

1 Ответ

0 голосов
/ 01 мая 2019

Вы можете получить доверенный контакт, используя эту схему. вы должны сопоставить класс ответа и класс POJO, потому что ваш код ожидает uphoto, uphone, uname, address, contacename1 и contactnumber1 в качестве переменных, но у вас uphoto, uphone, uname, address в качестве переменных и объект с именем TrustedContact1, который содержит contacename1 и contactnumber1, в вашем случае вы должны использовать:

package com.example.fizatanveerkhan.citycops;

import java.util.HashMap;

public class UserInformation {

    private String uphone;
    private String uphoto ;
    private String uname;
    private String address;

    private TrustedContact1 TrustedContact1;

    // use inner class on create class in another file
    class TrustedContact1{
       public TrustedContact1(){
       }
       private String contactname1;
       private String contactnumber1;
   }

    // getters and seeters

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