无法从android中的firebase读取数据 [英] Unable to read data from firebase in android

查看:261
本文介绍了无法从android中的firebase读取数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发Android应用程序,其中 Firebase 正用于维护移动后端。我在 Firebase

  {
用户:{
-Kh2wjxeT-w26opA0yqe:{
email:XX@gmail.com,
firstName:XX,
利息:{
interest:[Cricket,Table Tennis,Football]
},
lastName:XXX,
密码:abcd @ 1234
}
}
}



Users.java



  @IgnoreExtraProperties 
public class User {

public String firstName;
public String lastName;
public String email;
公共字符串密码;

公共利息;
$ b public User(){
//调用DataSnapshot.getValue(User.class)所需的默认构造函数
}

public User firstName,String lastName,String email,String password,Interest interest){
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.password = password;
this.interest = interest;




$ h2 Interest.java

  public class Interest {

public List< String>利益;
$ b public Interest(){
//调用DataSnapshot.getValue(User.class)所需的默认构造函数
}

public Interest(List< ; String>兴趣){
this.interests = interest;




$ b我已经添加了 addValueEventListener 在子节点用户这样

  mDatabase.child(users)。addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
for(DataSnapshot noteDataSnapshot:dataSnapshot.getChildren()){
User user = dataSnapshot.getValue(User .class);
Log.d(Scheduled,user.firstName + user.lastName + user.interest.interests.toString());
}
}

@Override
public void onCancelled(DatabaseError error){
//无法读取值
}
});

它正在读取正确的数据 Firebase Users java对象中的数据,所以当我无法访问值时。我不知道我在这里做了什么错误。
$ b


Log.d(Scheduled,user.firstName + user.lastName + user.interest.interests.toString()); / p>


解决方案

为了显示数据,您需要像这样更改代码:

  mDatabase.child(users)。child(userId).addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
String firstName = dataSnapshot.child(firstName).getValue(String.class);
Log.d(Scheduled,firstName);

$ b @Override
public void onCancelled(DatabaseError error){
//无法读取值
}
});

其中 userId 是生成的唯一ID由 push()方法。


I am working on android app where Firebase is being used for maintaining mobile back end. I have database in this format on Firebase

{
  "users" : {
    "-Kh2wjxeT-w26opA0yqe" : {
      "email" : "XX@gmail.com",
      "firstName" : "XX",
      "interest" : {
        "interests" : [ "Cricket", "Table Tennis", "Football" ]
      },
      "lastName" : "XXX",
      "password" : "abcd@1234"
    }
  }
}

Users.java

@IgnoreExtraProperties
public class User {

    public String firstName;
    public String lastName;
    public String email;
    public String password;

    public Interest interest;

    public User() {
        // Default constructor required for calls to DataSnapshot.getValue(User.class)
    }

    public User(String firstName, String lastName, String email, String password, Interest interest) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.email = email;
        this.password = password;
        this.interest = interest;
    }
}

Interest.java

public class Interest {

    public List<String> interests;

    public Interest() {
        // Default constructor required for calls to DataSnapshot.getValue(User.class)
    }

    public Interest(List<String> interests) {
        this.interests = interests;
    }
}

I have added addValueEventListener on child "users" in this way

mDatabase.child("users").addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot noteDataSnapshot : dataSnapshot.getChildren()) {
            User user = dataSnapshot.getValue(User.class);
            Log.d("Scheduled", user.firstName + user.lastName + user.interest.interests.toString());
        }
    }

    @Override
    public void onCancelled(DatabaseError error) {
        // Failed to read value
    }
});

It is fetching correct data what I have on Firebase but it is not mapping data in Users java object so when I am unable to access values. I am not sure what mistake I am doing here.

Log.d("Scheduled", user.firstName + user.lastName + user.interest.interests.toString());

解决方案

In order to display the data, you need change your code like this:

mDatabase.child("users").child(userId).addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
        String firstName = dataSnapshot.child("firstName").getValue(String.class); 
        Log.d("Scheduled", firstName); 
    } 

    @Override 
    public void onCancelled(DatabaseError error) { 
    // Failed to read value 
    } 
});   

In which userId is the unique id generated by the push() method.

这篇关于无法从android中的firebase读取数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆