【问题标题】:I cannot retrieve nested child from firebase through pojo class object我无法通过 pojo 类对象从 firebase 检索嵌套的子对象
【发布时间】:2019-05-02 16:23:25
【问题描述】:

这是我的数据库表:

我在安装过程中通过 POJO 类将一些用户信息保存在 Firebase 中,例如姓名、照片、电话号码。稍后在应用程序中用户可以添加受信任的联系人我正在添加它,使用 POJO 类在同一个用户表中创建一个嵌套子项。 我的问题是如何从 firebase 获取这个trustedcontact 值,即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) {

        }
    });

}

这就是我试图检索联系人 toast 的方式显示用户名 n 但不显示来自 dbname1 的联系人名

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);

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    您可以使用此架构获得信任的联系人。您必须在响应类和 POJO 类之间进行匹配,因为您的代码正在等待 uphoto、uphone、uname、address、contacename1 和 contactnumber1 作为 viarables,但是您有 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
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      • 2019-10-11
      • 2017-01-28
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多