Android 从firebase检索特定数据

Android 从firebase检索特定数据,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我是firebase的新手,我试图查看文档和youtube,但就是想不出来。 我在firebase中有一个简单的id和显示\u名称结构数据库: AppName{ users{ HzIYTbIbSzSlinF1Aa52WYUcD4E2{ display_name: "Greg Nks" } } 我希望数据进入一个用户对象,Id(string)和display_name(string) 我试图测试我的检索数据,但我无法得到它。 这是我的代码: public void in

我是firebase的新手,我试图查看文档和youtube,但就是想不出来。 我在firebase中有一个简单的id和显示\u名称结构数据库:

 AppName{
  users{
   HzIYTbIbSzSlinF1Aa52WYUcD4E2{
    display_name: "Greg Nks"
   }
}
我希望数据进入一个用户对象,Id(string)和display_name(string) 我试图测试我的检索数据,但我无法得到它。 这是我的代码:

public void initializeVariables(View view){
    mToolBar = view.findViewById(R.id.users_appBar);
    usersRv = view.findViewById(R.id.friends_list_rv);
    mLayoutManager= new LinearLayoutManager(view.getContext());
    myDataset = new ArrayList<>();
    mAuth = FirebaseAuth.getInstance();
    mFirebaseDatabase = FirebaseDatabase.getInstance();
    myRef = mFirebaseDatabase.getReference();

    mAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            FirebaseUser user = firebaseAuth.getCurrentUser();
            if(user!=null){

            }
        }
    };

    myRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            //remember it will called in the start of the fragment
            showData(dataSnapshot); //TODO fix the reading from firebase
        }

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

        }
    });
}

public void showData(DataSnapshot dataSnapshot){
    User u= dataSnapshot.getValue(User.class);
    u=null;
}
public void初始化变量(视图){
mToolBar=view.findviewbyd(R.id.users\u appBar);
usersRv=view.findviewbyd(R.id.friends\u list\u rv);
mLayoutManager=newlinearlayoutmanager(view.getContext());
myDataset=newArrayList();
mAuth=FirebaseAuth.getInstance();
mFirebaseDatabase=FirebaseDatabase.getInstance();
myRef=mFirebaseDatabase.getReference();
mAuthListener=new FirebaseAuth.AuthStateListener(){
@凌驾
AuthStateChanged上的公共void(@NonNull FirebaseAuth FirebaseAuth){
FirebaseUser=firebaseAuth.getCurrentUser();
如果(用户!=null){
}
}
};
myRef.addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
//记住它将在片段的开头被调用
showData(dataSnapshot);//修复从firebase读取的数据
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}
公共void showData(DataSnapshot DataSnapshot){
用户u=dataSnapshot.getValue(User.class);
u=零;
}
谢谢

  Class User {
    private String display_name;
    private String userKey;
    public User(){
    }

    public User(String name,String key){
    display_name = name;
    userKey = key;
    }
     public void setDisplay_name(Sring name)
    {
    display_name = name;
    }
    public String getDisplay_name()
    {
    return display_name;
    }
     public void setUserKey(Sring key)
    {
    userKey = key;
    }
    public String getUserKey()
    {
    return userKey;
    }
}
现在换个姿势

User u= dataSnapshot.getValue(User.class);
据此:

String key = datasnapshot.getKey();
    String name = datasnapshot.child('display_name').getValue().toString();
    User user = new User(name, key);

这是钥匙不是idsorry这是我的错我已经编辑了名称的答案现在代码已编辑使用它,请告诉我结果他们,非常感谢!我有一些其他错误,所以我现在不能运行它,如果它工作,我会在以后更新。仅供我理解-datashot.getValue为我提供了id(数据库中的所有id?spesific one?)。我的意思是当我的数据库包含多个用户时会发生什么?当然,别担心!谢谢