Android Firebase从多个位置获取单个值

时间:2016-06-12 07:23:38

标签: java android firebase listener firebase-realtime-database

我有一个Android Firebase,其中包含一个对象列表(编号为1到~500)。我正在编写一个代码,随机选择其中六个对象并将它们作为列表返回。我有它工作,但我相信这是一个非常低效的方法。我目前生成一个包含六个随机整数的列表,并使用addListenerForSingleValueEvent六次单独拉动每个对象。

是否可以简化此操作并构建HashMap,以便我有一个侦听器将所有六个对象作为列表拉出来?

我目前正在使用以下方法。我称之为六次(每个随机数一次),根据传递的随机整数设置DatabaseReference,并将返回值添加到列表中。

    private void getRandomObject(int objectIdNumber){
    DatabaseReference objectRef = baseRef.child(Constants.FB_LOCATION_OBJECTS)
            .child(Integer.toString(objectIdNumber));

    objectRef.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            System.out.println(snapshot.getValue());

            //The list below is the global ArrayList<Object> 
            objectOptionsList.add(snapshot.getValue(POJOObject.class));
            numberOfObjectsToGet--;
            if (numberOfObjectsToGet == 0) {
                proceed();
            }
        }

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

0 个答案:

没有答案