java - 如何从 firebase 实时数据库检索数据并将其显示在个人资料仪表板中

标签 java android firebase firebase-realtime-database

所以我试图显示与已登录用户相关的数据,但与之相关的数据返回 null 我尝试了多种解决方案,但没有成功

public class HomeViewModel extends ViewModel {

private MutableLiveData<String> mText;
DatabaseReference userdata;
String namedata;

public HomeViewModel() {
    userdata = FirebaseDatabase.getInstance().getReference();

    userdata.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for(DataSnapshot snap : dataSnapshot.getChildren()){
                User user = snap.getValue(User.class);
                namedata = user.getUserId();

            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
    mText = new MutableLiveData<>();
    mText.setValue("Welcome back! " +namedata);
}

public LiveData<String> getText() {
    return mText;
}}`

enter image description here

这是我想要获取这些数据并将其显示在 View 中的 User.class

public class User {
String userId;
String userPhone;
String userGender;

public User() {

}

public User(String userId, String userPhone, String userGender) {
    this.userId = userId;
    this.userPhone = userPhone;
    this.userGender = userGender;
}



public String getUserId() {
    return userId;
}

public String getUserPhone() {
    return userPhone;
}

public String getUserGender() {
    return userGender;
}}

最佳答案

您必须调用“userId”

@Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot snap : dataSnapshot.getChildren()){
                    HashMap<String, String> map = (HashMap<String, String>) snap.getValue();
                    if (map.containsKey("userId")) {
                        if (map.get("userId").equals("william henry")) {
                            String userGender = map.get("userGender");
                        }
                    }
                }
            }

@Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot snap : dataSnapshot.getChildren()){
                    HashMap<String, String> map = (HashMap<String, String>) snap.getValue();
                    if (map.containsKey("userId")) {
                        String userGender = map.get("userId");
                    }
                }
            }

关于java - 如何从 firebase 实时数据库检索数据并将其显示在个人资料仪表板中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59572853/

相关文章:

java - 遍历java中特定范围的行(apache poi)

java - 如何从 Mule Studio 中的连接器发送和获取对象?

java.net.SocketException : socket failed: EACCES (Permission denied) MongoDB connection 异常

Java 8 - 如何声明对返回 void 的未绑定(bind)非静态方法的方法引用

android - RecyclerView 上的波纹效果在轻敲时不起作用

android - 通过引用颜色并添加透明度信息来定义颜色?

java - 如何从 Firestore 中删除选定的文档 ID

java - 添加两 Pane 平板电脑布局导致在移动设备中找不到 View (小于 w600dp)

android - 如何将新闻文章/评论与 Firebase 集成?

android - 聊天应用中的 Firebase 实时数据库结构