如何使用Android检索存储在Firebase Realtime数据库中的对象的单个字段

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

我正在尝试从Firebase实时数据库中检索用户的用户名。我正在使用ValueEventListener,但无法正常工作。我将数据另存为User对象。我的User模型类具有getter和setter,参数化和空白构造函数。请帮忙。我的问题是,我缺少或做错了什么。

这是我用来保存User对象的路径:

 mDatabaseRef = FirebaseDatabase.getInstance().getReference();
    mDatabaseRef.child("users").child(user_type).child(mUserId).child("personal information").setValue(user);

这是我用来检索数据的代码,但是它不起作用!

        mFirebaseUser = mFirebaseAuth.getCurrentUser();

        userName = (TextView) findViewById(R.id.userNameHeader);

        //check to see if user is logged in
        if(mFirebaseUser==null){
            //the user is not logged in, start login activity
            loadLogInView();
        }else {
            mUserId = mFirebaseUser.getUid();
            mDatabaseRef = FirebaseDatabase.getInstance().getReference(
                    "users").child("Buyer Account").child(mUserId).child("personal information");

            mDatabaseRef.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                    User user = dataSnapshot.getValue(User.class);
                    userName.setText(user.getUserName());
                }

                @Override
                public void onCancelled(DatabaseError error) {
                    // Failed to read value
                }
            });

And here is how the data looks on the Realtime database:

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

您的字段名称和方法名称为getUserName的问题。

mDatabaseRef = FirebaseDatabase.getInstance().getReference("users").child("Buyer Account").child(mUserId).child("personal information");

mDatabaseRefr.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String name1 = dataSnapshot.child("userName").getValue(String.class);
        Log.e("name", name1);
    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.e(TAG, "onCancelled", databaseError.toException());
    }
});

更改方法:

getUserName()

至:

getuserName()
© www.soinside.com 2019 - 2024. All rights reserved.