【问题标题】:returning 2 json values from firebase but one of them is always null? Why?从 firebase 返回 2 个 json 值,但其中一个始终为空?为什么?
【发布时间】:2016-12-09 00:43:21
【问题描述】:

我不是经验丰富的 Android 应用程序开发人员,这只是我的第一个应用程序,这就是我的问题。我通过从 addListenerForSingleValueEvent 调用 dataSnapshot 来从经理的 Json 区域获取“company_name”的值,然后将该值放入收件人的 Json 区域(我还将经理的 ID“manager_id”存储在收件人的 Json 区域中),到目前为止,一切正常。现在的问题是从收件人区域读取值“company_name”以使用 firebaseUI 将其填充到列表中,出于某种原因,我无法弄清楚为什么“manager_id”作为字符串返回但“company_name”为空。这是代码: 获取“company_name”的值:

mManagersCompany.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) {
            companyName = dataSnapshot.getValue(String.class);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

将其存储在收件人区域:

Map<String, Object> info = new HashMap<>();
info.put("company_name", companyName);
info.put("manager_id", manager_id);
mListOfManagers.push().updateChildren(info);

对象:

public class CompanyItem {
private String company_name;
private String manager_id;

public CompanyItem(){}

public CompanyItem(String company_name, String manager_id){
    this.company_name = company_name;
    this.manager_id = manager_id;
}

public String getCompanyName() {
    return company_name;
}

public void setCompanyName(String companyName) {
    this.company_name = companyName;
}

public String getManager_id() {
    return manager_id;
}

public void setManager_id(String manager_id_entering) {
    this.manager_id = manager_id_entering;
}

}

使用 firebaseUI 的 populateViewHolder 检索“manager_id”和“company_name”:

@Override
                protected void populateViewHolder(CompanyViewHolder viewHolder, CompanyItem model, int position) {
                    viewHolder.hText.setText(model.getCompanyName());
                    viewHolder.mText.setText(model.getManager_id());
                }

这是 firebase 数据库中接收者的 Json 的一部分:

{  "-KYVoYBRD4UEBL6GYKD_" : 
    {
    "company_name" : "Dude Company",
    "manager_id" : "a1b2c3d4"
    }
}

为什么它为“manager_id”返回“a1b2c3d4”,但为“company_name”返回空值?我尝试了很多不同的方法,但没有成功,我在 stackoverflow 中搜索了答案,但找不到与我的问题相近的答案。有人可以帮忙吗?

【问题讨论】:

  • 更改 company_name 的 setter/getter 以匹配 manager_id 的格式
  • 请更新您的问题以显示更新后的代码。
  • @ScaryWombat,天哪!你是对的,我将 getCompanyName() 更改为 getCompany_name() 并且由于某种原因我仍然不明白,我认为方法名称并不重要。但无论哪种方式,我都觉得很愚蠢,我非常感谢你!!!

标签: android json firebase firebase-realtime-database firebaseui


【解决方案1】:

根据我的评论

更改公司名称的设置器/获取器以匹配 manager_id 的格式 -

例如

getCompanyName()getCompany_name()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 2020-06-24
    • 1970-01-01
    • 2015-08-25
    • 2018-09-02
    相关资源
    最近更新 更多