Android studio firebase数据库检索多个子项的子值

问题描述 投票:0回答:1

我有一个存储用户数据的数据库firebase。我想在“我的帐户”片段中将所有这些数据显示为单独的文本视图。

我已设法将数据加载到textview,但我不认为这是最好的方法,因为它需要每个textView的很多代码。

你能帮助我改进这些代码吗,这样我就不必为每个textView创建新的数据库引用,并为每个textView附加一个监听器。

textViews是;姓名,姓氏,SID,电子邮件和用户名

 textViewName = (TextView) v.findViewById(R.id.textViewName);

    //code goes here that is not to do with the fargments or in onCreate View
    FirebaseUser loggedinFirebaseUser = FirebaseAuth.getInstance().getCurrentUser() ;
    String userId = loggedinFirebaseUser.getUid();

    //stores the reference as a string to be passed onto the userDataReference table
    databaseNameUrlRef = "users/userData" + "/" + userId;

    userDataRef = FirebaseDatabase.getInstance().getReference(databaseNameUrlRef + "/name");

    //Retrieve all user data and store and display in correct textviews

   userDataRef.addValueEventListener(new ValueEventListener() {
       @Override
       public void onDataChange(DataSnapshot dataSnapshot) {
           String Name = dataSnapshot.getValue().toString();
           textViewName.setText(Name);
       }

       @Override
       public void onCancelled(DatabaseError databaseError) {

       }
   });

This is the database

java android firebase firebase-realtime-database
1个回答
0
投票

创建一个User对象。

userDataRef = FirebaseDatabase.getInstance().getReference("/users/userData");
userDataRef.addChildEventListener(new ChildEventListener() {
     public void onChildAdded(DataSnapshot dataSnapshot, String previousKey) {
         User newUser = (User) dataSnapshot.getValue(User.class);
         //Now you can assign values to your textview by retrieving userdata from user object
    }
    public void onChildChanged(DataSnapshot dataSnapshot, String s) {
        User user = (User) dataSnapshot.getValue(User.class);
    }
    public void onChildRemoved(DataSnapshot dataSnapshot) {
        //...
    }
    public void onChildMoved(DataSnapshot dataSnapshot, String s) {
        //...
    }
    public void onCancelled(FirebaseError firebaseError) {
        //...
    }
});

希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.