Java 从Firebase数据库检索特定用户的数据

Java 从Firebase数据库检索特定用户的数据,java,android,firebase-realtime-database,Java,Android,Firebase Realtime Database,我正在尝试从Firebase实时数据库检索数据。它起作用了。我的问题是如何从userDatabase设置文本。结果将是null,我认为它在使用userID时不会读取数据库 FirebaseUser user = firebaseAuth.getCurrentUser(); String userid = user.getUid(); txvEmail = (TextView) findViewById(R.id.txvEmail); txvEmail.setT

我正在尝试从
Firebase实时数据库
检索
数据
。它起作用了。我的问题是如何从
userDatabase
设置文本。结果将是
null
,我认为它在使用
userID
时不会读取
数据库

    FirebaseUser user = firebaseAuth.getCurrentUser();

    String userid = user.getUid();

    txvEmail = (TextView) findViewById(R.id.txvEmail);
    txvEmail.setText("Welcome "+user.getEmail());

    txvName = (TextView) findViewById(R.id.txvName);
    txvAdd =(TextView) findViewById(R.id.txvAdd);

    userDatabase = new UserDatabase();

    reff = FirebaseDatabase.getInstance().getReference("Member").child(userid);
    reff.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            txvName.setText(" "+userDatabase.getFirstName()+" "+userDatabase.getLastName());

        }

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

        }
    });

我认为您必须将模型类定义为快照的值

txvEmail = (TextView) findViewById(R.id.txvEmail);
txvEmail.setText("Welcome "+user.getEmail());

txvName = (TextView) findViewById(R.id.txvName);
txvAdd =(TextView) findViewById(R.id.txvAdd);

userDatabase = new UserDatabase();

reff = FirebaseDatabase.getInstance().getReference("Member").child(userid);
reff.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        //new code
        for(DataSnapshot snap: dataSnapshot.getChildren()){
            //you must define your class model to the value of snapshots
            userDatabase user = snap.getValue(userDatabase.Class);
             txvName.setText(" "+user.getFirstName()+" "+user.getLastName());
       }


    }

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

    }
});

我认为您必须将模型类定义为快照的值

txvEmail = (TextView) findViewById(R.id.txvEmail);
txvEmail.setText("Welcome "+user.getEmail());

txvName = (TextView) findViewById(R.id.txvName);
txvAdd =(TextView) findViewById(R.id.txvAdd);

userDatabase = new UserDatabase();

reff = FirebaseDatabase.getInstance().getReference("Member").child(userid);
reff.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        //new code
        for(DataSnapshot snap: dataSnapshot.getChildren()){
            //you must define your class model to the value of snapshots
            userDatabase user = snap.getValue(userDatabase.Class);
             txvName.setText(" "+user.getFirstName()+" "+user.getLastName());
       }


    }

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

    }
});

非常感谢你,我从来没有想到sombody回复得这么快。答案很有帮助,非常感谢。如果你愿意的话,你可以接受我的答案,提高工资。非常感谢。我从来没想过会有人回复得这么快。答案很有帮助,非常感谢。如果你愿意的话,你可以接受我的答案并提高工资