我有一个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());
}
});
}