代码之家  ›  专栏  ›  技术社区  ›  Nakash.i

从firebase检索特定数据

  •  1
  • Nakash.i  · 技术社区  · 6 年前

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

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

    我希望数据进入一个用户对象,Id(字符串)和显示名称(字符串) 我试图测试我的检索数据,但我无法得到它。 这是我的代码:

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

    谢谢

    1 回复  |  直到 6 年前
        1
  •  1
  •   Mohammad Sommakia Prince    6 年前
      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);