使用Android模型类从Firebase访问用户信息

时间:2017-12-14 10:17:55

标签: java android firebase firebase-realtime-database

所以我正在开发一个使用授权系统来记录用户的应用程序。无论何时用户注册,它都会在我的数据库中更新:

User user = new User(username);
FirebaseDatabase.getInstance().getReference().child("users").child(userid).child("profile").setValue(user);

问题是,当我尝试在下一个活动中再次访问数据以尝试获取当前用户的用户名时,我收到以下错误消息:

com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type friendimals.Model.User

我正在使用基本的模型类:

public class User {

    private String username;

    public User() {

    }

    public User(String username) {
        this.username= username;

    }


    public String getUsername(){
        return this.username;
    }
}

这就是我访问数据库中信息的方式:

mDatabase.child("users").child(mUserId).child("profile").addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                //This is the line that is causing the crash
                User user = dataSnapshot.getValue(User.class);
                username_TextView.setText(user.getUsername());
            }

            @Override
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

关于此错误意味着什么和/或如何修复它的任何想法?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

问题是您没有在模型类中指定的任何名为userid | username:usernameValue 的键。 {{1}}仅返回String值。

如果您的数据结构是这样的,那么只能使用模型类

{{1}}