我是Firebase的新手,我尝试查看说明文件和youtube,但无法弄清楚。
我在firebase中有一个简单的id和display_name结构数据库:

 AppName{
  users{
   HzIYTbIbSzSlinF1Aa52WYUcD4E2{
    display_name: "Greg Nks"
   }
}


我希望数据通过ID(string)和display_name(string)进入User对象
我试图测试我的检索数据,但无法获取。
这是我的代码:

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;
}


谢谢!

最佳答案

  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);

09-11 19:23
查看更多