从firebase min 3 max 5中获取随机物品

时间:2017-12-31 00:02:10

标签: firebase random firebase-realtime-database

我正在尝试从我的firebase数据库中获取随机项,它几乎可以正常工作, 有时我只得到一个或两个项目,最小值为3,最大值为5。 每个项目都有一个索引,它获取的项目是startAt(startindex)和endAt(startIndex + randomNumber)。

除了在数据库中的每个项目上使用索引之外,还有其他方法吗?

以下是代码现在的样子:

    randomNumber = getRandomInt(3,5);
    listView = (ListView)view.findViewById(R.id.listView);
    int startIndex = (int)(Math.random() * childs+1);

    adapter = new FirebaseListAdapter<TraningData>(getActivity(),TraningData.class,R.layout.layout_traning_item,ref_1
    .orderByChild("index")
    .startAt(startIndex)
    .endAt(startIndex+randomNumber)) {
        @Override
        protected void populateView(View view, final TraningData td, int i) {
            //Populating over here!
        }
    };
    listView.setAdapter(adapter);

1 个答案:

答案 0 :(得分:0)

由于Firebase从不想添加此功能。 这里我是如何通过将所有数据添加到数组然后进行随机选择来解决它的。

    ArrayList<TraningData> randomSelected = new ArrayList<>();
    Random rand = new Random();
    int numElements = getRandomInt(3,5);
    for(int i = 0;i < numElements;i++){
        int randomIndex = rand.nextInt(traningData.size());
        randomSlected.add(traningData.get(randomIndex));
    }
    cAdapter = new CustomAdapter(getActivity(),randomSlected);
    listView.setAdapter(cAdapter);