自动将自定义模型映射到数据结构

将一些数据设置到数据库并获得由这样的几个节点组成的结构之后;

"user" : {
    "-KdbKcU2ptfYF2xKb5aO" : {
      "firstName" : "Arthur",
      "lastName" : "Schopenhauer",
      "userName" : "AphorismMan",
      "phone" : "+9022-02-1778",
      "gender": "M",
      "age" : 25
    },
    "-KdbQFjs9BDviuqQVHjY" : {
      "firstName" : "Werner",
      "lastName" : "Heisenberg",
      "userName" : "whereAmI",
      "phone" : "+9005-12-1901",
      "gender": "M",
      "age" : 75
    }
  }

你可以对数据结构进行分类。

创建类

创建要设置为数据库的模型类。

@IgnoreExtraProperties
public class User {
    public String firstName;
    public String lastName;
    public String userName;
    public String phone;
    public String gender;
    public int age;

    public User() {
    }

    public User(String firstName, String lastName, String userName, String phone, String gender, int age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.userName = userName;
        this.phone = phone;
        this.gender = gender;
        this.age = age;
    }
}

创建要映射到数据的模型类时要记住的一些事项:

  1. 你必须有一个空的构造函数
  2. 变量/字段的范围必须是公共的,以便从 firebase 返回的 DataSnapshot 可以访问这些字段。如果不这样做,当你想要获取数据时,DataSnapshot 无法在回调中访问你的模型,这将导致异常。
  3. 变量/字段的名称应与数据结构中的名称匹配。

发送到 Firebase

创建用户对象

User user = new User ( "Arthur","Schopenhauer","AphorismMan","+9022-02-1778","M",25)

和参考

DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();

现在你可以参考你的数据库了。使用 databaseReference.child("user") 创建 user 节点。如果你做 .push(),你的模型将位于随机创建的独特 ID 中,如上面的 "-KdbKcU2ptfYF2xKb5aO", "-KdbQFjs9BDviuqQVHjY"

databaseReference.child("user").push().setValue(user, new DatabaseReference.CompletionListener() {
            @Override
            public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
                Toast.makeText(getActivity(), "User added.", Toast.LENGTH_SHORT).show();

            }
        });

如果要在特定密钥下设置数据,请使用 .child("yourSpecificKey") 而不是 .push() 进行设置。

databaseReference.child("user").child("yourSpecificKey").setValue(user,...