【问题标题】:Retrieve specific data from firebase从 Firebase 中检索特定数据
【发布时间】:2018-12-09 08:00:01
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:
      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);
    

    【讨论】:

    • 这是关键而不是 id
    • 对不起,这是我的错,我已经编辑了名字的答案
    • 现在编辑的代码使用它,请告诉我结果
    • 嘿,非常感谢!我有一些其他错误,所以我现在无法运行它,如果它有效,我稍后会更新。只是为了我的理解- datashot.getValue 给了我 id(数据库中的所有 id ?特别的一个?)。我的意思是当我的数据库包含多个用户时会发生什么?
    • 当然,别担心!谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2017-01-19
    • 1970-01-01
    • 2019-02-04
    • 2019-02-07
    相关资源
    最近更新 更多