Collections.shuffle (список) не тасует мой список - PullRequest
0 голосов
/ 16 мая 2018

У меня проблема с приложением Quiz. Мне нужно заполнить список вопросов (взятый из базы данных Firebase), но мой код, похоже, неверен.

Файл Start.java:

private void loadQuestion(String categoryId) {

        //First, clear list if have old question
        if(Common.questionList.size() > 0)
            Common.questionList.clear();

        questions.orderByChild("CategoryId").equalTo(categoryId)
                .addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        for(DataSnapshot postSnapshot : dataSnapshot.getChildren())
                        {
                            Question ques = postSnapshot.getValue(Question.class);
                            Common.questionList.add(ques);
                        }
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });
        //Random list
        Collections.shuffle(Common.questionList);
    }

и файл Common.java:

public class Common {
    public static String categoryId;
    public  static User currentUser;
    public static List<Question> questionList = new ArrayList<>();
}

Спасибо всем.

1 Ответ

0 голосов
/ 16 мая 2018

Ваши данные добавляются с помощью обратного вызова addValueEventListener

В начале вашей функции вы очищаете свой список:

        Common.questionList.clear();

Так что Collections.suffle перетасовывается на вашем пустомтолько список

То, что вы хотите, это поместить эту функцию перемешивания в ваш обратный вызов:

                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    for(DataSnapshot postSnapshot : dataSnapshot.getChildren())
                    {
                        Question ques = postSnapshot.getValue(Question.class);
                        Common.questionList.add(ques);
                    }
                    // Shuffle it
                    Collections.shuffle(Common.questionList);

                }
...