我有我的ProfilePage.class,它将显示用户的个人资料,但我有一个问题,因为我有两种不同类型的用户。其中一个是普通用户,另一个是businessUser。我如何调用数据库的两个子项并在xml布局中显示某些信息,具体取决于用户的类型到目前为止,我在下面有这个但是它无法正常工作。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile_page_both);
mAuth = FirebaseAuth.getInstance();
mDatabase = FirebaseDatabase.getInstance().getReference().child("user");
mDatabaseBuisness = FirebaseDatabase.getInstance().getReference().child("businessAcc");
mNormalUserProfilePic = (ImageView) findViewById(R.id.normalUserProfilePic);
mNormalUserEmail = (TextView) findViewById(R.id.normalUserEmail);
mNormalUserProfile = (TextView) findViewById(R.id.normalUserProfile);
mBusinessUserPostcode = (TextView)findViewById(R.id.businessPostcode);
String uid = mAuth.getCurrentUser().getUid();
mDatabase.child(uid).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String profile_username = (String) dataSnapshot.child("username").getValue();
String profile_image = (String) dataSnapshot.child("image").getValue();
String profile_uid = (String) dataSnapshot.child("uid").getValue();
String profile_email = (String) dataSnapshot.child("email").getValue();
mNormalUserEmail.setText(profile_email);
mNormalUserProfile.setText(profile_username);
Picasso.with(ProfilePageNormalUser.this).load(profile_image).into(mNormalUserProfilePic);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
mDatabaseBuisness.child(uid).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String profile_username = (String) dataSnapshot.child("username").getValue();
String profile_image = (String) dataSnapshot.child("image").getValue();
String profile_uid = (String) dataSnapshot.child("uid").getValue();
String profile_email = (String) dataSnapshot.child("email").getValue();
String profile_postcode = (String) dataSnapshot.child("postCode").getValue();
mNormalUserEmail.setText(profile_email);
mNormalUserProfile.setText(profile_username);
mBusinessUserPostcode.setText(profile_postcode);
Picasso.with(ProfilePageNormalUser.this).load(profile_image).into(mNormalUserProfilePic);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
这是数据库结构:
答案 0 :(得分:0)
您正在重新启动问题的Firebase参考。解决您的问题。
首先采用根参考。
DatabaseReference mRootRef = FirebaseDatabase.getInstance().getReference();
然后从根引用创建两个单独的引用。
DatabaseReference usersRef = mRootRef.child("users");
DatabaseReference buisnessAccRef = mRootRef.child("businessAcc");
现在你可以使用这些参考文献来完成你的工作。
答案 1 :(得分:-1)
是的,我知道你到底是什么意思 您可以按以下方式使用snapMap:
Map<String,String>snapMap = mapOf("from","","to","","imageUrl","","ImageName","");
FirebaseDatabase.getInstance().getReference().child("users")
.child(keys.get(position)).child("snaps").push().setValue(snapMap);
// push is for generate a random id
// you can put your value insted of empty string