【问题标题】:How to retrieve all the users data in Firebase (android)?如何检索 Firebase (android) 中的所有用户数据?
【发布时间】:2017-03-21 16:06:03
【问题描述】:

我用来检索数据的代码:

Firebase ref = new Firebase(Config.FIREBASE_URL);
            ref.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot snapshot) {
                    for (DataSnapshot postSnapshot : snapshot.getChildren()) {
                        //Getting the data from snapshot
                        Person person = postSnapshot.getValue(Person.class);


                        //Adding it to a string
                        String string = "Name: "+person.getName()+"\nAddress: "+person.getAddress()+"\nLatLong: "+person.getflat()+","+person.getflng()+"\nReamaining Distance: "+person.getfdist();

                        //Displaying it on textview
                        textViewPersons.setText(string);
                    }
                }

                @Override
                public void onCancelled(FirebaseError firebaseError) {
                    System.out.println("The read failed: " + firebaseError.getMessage());
                }
            });

这就是我的 firebase 数据库的样子。问题是使用上面的代码我只能检索第二个用户(Simranjit Singh)的数据。我想检索这两个用户。

6MpsYKoVMNfJMvUdE9y2oPZSnxb2addclose
   address: 
    "tintinsharma0001@gmail.com"
   fdist: 
    "31.95893"
   flat: 
    "30.69074016"
   flng: 
    "76.74376851"
   name: 
    "Tintin Sharma"
fxrutNP5uLfoPGIJtTuXAYam5dP
   address: 
    "samsinghsimran@gmail.com"
   fdist: 
    "31.95893"
   flat: 
    "30.69074016"
   flng: 
    "76.74376851"
   name: 
    "Simranjit Singh"

【问题讨论】:

  • 请发布您的 Config.FIREBASE_URL
  • 刚刚回答@Simranjit
  • 我希望这些数据不是来自实际用户。
  • 你能写下 Config.FIREBASE_URL / 吗?
  • 我猜你的问题在 Config.FIREBASE_URL 中?

标签: android firebase firebase-realtime-database


【解决方案1】:

问题是您要获取每个用户,并将其分配给相同的文本视图,这会覆盖最后一个用户。所以无论你有多少,你总是会得到最后一个用户。您应该将用户放入 ArrayList 或类似的数据结构中,并使用它来填充列表视图:

Firebase ref = new Firebase(Config.FIREBASE_URL);
            ref.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot snapshot) {
                    ArrayList<Person> peopleList = new ArrayList<Person>():
                    for (DataSnapshot postSnapshot : snapshot.getChildren()) {
                        //Getting the data from snapshot
                        Person person = postSnapshot.getValue(Person.class);

                        //add person to your list
                        peopleList.add(person);
                        //create a list view, and add the apapter, passing in your list

                    }
                   yourListView.setAdapter(personList);
                }

                @Override
                public void onCancelled(FirebaseError firebaseError) {
                    System.out.println("The read failed: " + firebaseError.getMessage());
                }
            });

【讨论】:

    【解决方案2】:

    您没有正确检索数据...您正在覆盖字符串变量中的数据,因此您只会获得第二个值。您需要一个用户列表。

        private static HashMap<String, Person> personList = new HashMap<>();;
        Firebase ref = new Firebase(Config.FIREBASE_URL);
                    ref.addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot snapshot) {
                            for (DataSnapshot postSnapshot : snapshot.getChildren()) {
                                //Getting the data from snapshot
                                Person person = postSnapshot.getValue(Person.class);
        personList.put(snapshot.getKey(), person.getName());
    
    
                                //Adding it to a string
                                String string = "Name: "+person.getName()+"\nAddress: "+person.getAddress()+"\nLatLong: "+person.getflat()+","+person.getflng()+"\nReamaining Distance: "+person.getfdist();
    
                                //Displaying it on textview
                                textViewPersons.setText(string);
                            }
    //Return you personList here
                        }
    
                        @Override
                        public void onCancelled(FirebaseError firebaseError) {
                            System.out.println("The read failed: " + firebaseError.getMessage());
                        }
                    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 2018-04-08
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2021-11-02
      相关资源
      最近更新 更多