Android Firestore-获取收藏夹中的下一项

时间:2019-08-22 14:30:43

标签: android google-cloud-firestore

我正在尝试通过Firestore使用Android制作测验应用。我可以收集问题并加载第一个问题,但是单击“下一步”按钮时,它表示列表为空,或者告诉我我的计数器无法更改,因为它已声明为 final >

我只尝试将计数器放在onclick方法(as shown here)中,但随后无法加载列表中的第一项。

我认为不应该再使用forloop了,但是我可能错了。

这听起来很基础,但是我该如何迭代到收藏夹列表中的下一项?

感谢所有帮助。

这是我到目前为止的情况。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_quiz);

loadQuestionSet();
}


private void loadQuestionSet() 

        questionColRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful()) {


                    for (QueryDocumentSnapshot document : task.getResult()) {
                        String questionString = document.get("question").toString();
//                        questionTextTextView.setText(document.get("question").toString());

                        loadQuestion();

                        quizAnswerSubmitButton.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                loadQuestion();
                            }
                        });
                Log.d(TAG, "onComplete: " + questionList);

    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Log.d(TAG, "onFailure: was not able to get a list of questions for Quiz activity");
        }
    });

    Log.d(TAG, "loadQuestionSet: " + questionList);

}

 private void loadQuestion() {
        // get next question in query
        //update score
        Log.d(TAG, "loadQuestion: " + questionList.toString());
        mCounter ++;

}

1 个答案:

答案 0 :(得分:1)

可以使用以下查询游标完成此操作。

    Query first = db.collection("restaurants")
    .orderBy("rating")
    .limit(25);

    first.get()
    .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
    @Override
    public void onSuccess(QuerySnapshot documentSnapshots) {

        DocumentSnapshot lastVisible = documentSnapshots.getDocuments()
                .get(documentSnapshots.size() -1);

        Query next = db.collection("restaurants")
                .orderBy("rating")
                .startAfter(lastVisible)
                .limit(25);

       }
  });