从 firebase 返回 2 json 个值,但其中一个值始终为 null?为什么?
returning 2 json values from firebase but one of them is always null? Why?
我不是经验丰富的 android 应用程序开发人员,这只是我的第一个应用程序,这里说的是我的问题。我通过从 addListenerForSingleValueEvent 调用 dataSnapshot,然后将值放入接收者的 Json 区域,从经理的 Json 区域获取 "company_name" 的值(我还存储了经理的 ID "manager_id" 在收件人的 Json 区域),到目前为止一切正常。现在的问题是从收件人的区域读取值 "company_name" 以使用 firebaseUI 将其填充到列表中,出于某些原因我无法弄清楚为什么 "manager_id" 被 return 编辑为字符串,但 "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" return "a1b2c3d4" 而 "company_name" 为空?我尝试了很多不同的方法,但都没有成功,我在 Whosebug 中搜索了一个答案,但找不到与我的问题接近的答案。有人可以帮忙吗?
根据我的评论
将 setter/getter 更改为 company_name 以匹配 manager_id 的格式 –
例如
getCompanyName()
到 getCompany_name()
我不是经验丰富的 android 应用程序开发人员,这只是我的第一个应用程序,这里说的是我的问题。我通过从 addListenerForSingleValueEvent 调用 dataSnapshot,然后将值放入接收者的 Json 区域,从经理的 Json 区域获取 "company_name" 的值(我还存储了经理的 ID "manager_id" 在收件人的 Json 区域),到目前为止一切正常。现在的问题是从收件人的区域读取值 "company_name" 以使用 firebaseUI 将其填充到列表中,出于某些原因我无法弄清楚为什么 "manager_id" 被 return 编辑为字符串,但 "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" return "a1b2c3d4" 而 "company_name" 为空?我尝试了很多不同的方法,但都没有成功,我在 Whosebug 中搜索了一个答案,但找不到与我的问题接近的答案。有人可以帮忙吗?
根据我的评论
将 setter/getter 更改为 company_name 以匹配 manager_id 的格式 –
例如
getCompanyName()
到 getCompany_name()