我正在尝试通过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 ++;
}
答案 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);
}
});