startAfter未在Firestore android中工作
我创建了一个类似测验的应用程序,其中10个问题一次提取。如果用户得到10分中的8分。然后我回答接下来的10个问题。但是开始之后总是给出相同的响应startAfter未在Firestore android中工作,android,firebase,google-cloud-firestore,Android,Firebase,Google Cloud Firestore,我创建了一个类似测验的应用程序,其中10个问题一次提取。如果用户得到10分中的8分。然后我回答接下来的10个问题。但是开始之后总是给出相同的响应 val questionCollectionRef = db.collection("questionCollection") ///.whereArrayContains("tags", tagName) .orderBy("questionID", Query.Direction.DESCENDING); val i
val questionCollectionRef = db.collection("questionCollection")
///.whereArrayContains("tags", tagName)
.orderBy("questionID", Query.Direction.DESCENDING);
val id = SharedPrefs(this@McqActivity).read(OLD_DOCUMENT_ID, "")
if(id.isNotEmpty()){
//questionCollectionRef.whereLessThan("questionID",id) //also tried for whereGreaterThan
questionCollectionRef.startAfter(id);
Log.v("startAfter","start After : " + id + "" );
}
questionCollectionRef.limit(10).get()
//fixme also orderBy date So user can see latest question first
.addOnSuccessListener { querySnapshot ->
if (querySnapshot.isEmpty()) {
Log.d(TAG, "onSuccess: LIST EMPTY")
} else {
val questionList = querySnapshot.toObjects(QuestionBO::class.java)
questionList.forEach { questionItem ->
resultList.add(ResultBO(questionItem))
}
if (resultList.size > 0) {
refreshQuestionWithData()
}
}
}
.addOnFailureListener { exception ->
exception.printStackTrace()
}
此代码是在活动中编写的。在得分超过8分后
我再次打开相同的活动,调用了
questionCollectionRef.startAfter
,但仍然是活动中显示的相同问题当调用startAfter()
(或任何其他查询构建方法)时,它返回一个新的查询对象。因此,您需要保留对该对象的引用:
我还将
questionCollectionRef
重命名为questionCollectionQuery
,因为orderBy
之后的类型、startAfter
或limit
是一个查询。@AlexMamo查看编辑。。下次打开活动时,它称为startAfter方法。但同样的记录显示
var questionCollectionQuery = db.collection("questionCollection")
.orderBy("questionID", Query.Direction.DESCENDING);
val id = SharedPrefs(this@McqActivity).read(OLD_DOCUMENT_ID, "")
if(id.isNotEmpty()){
questionCollectionQuery = questionCollectionQuery.startAfter(id);
Log.v("startAfter","start After : " + id + "" );
}
questionCollectionQuery.limit(10).get()...