我有一个存储用户数据的数据库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) {
}
});
答案 0 :(得分: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) {
//...
}
});
希望这有帮助!