Die Firestore-Dokumentation bietet begrenzte Anleitungen zur Implementierung der Paginierung mit RecyclerView für Scrollszenarien. Trotz Befolgung der offiziellen Dokumentation können Benutzer auf Schwierigkeiten stoßen.
Um Daten aus Firestore zu paginieren und schrittweise in einem RecyclerView anzuzeigen, befolgen Sie diese Schritte:
// ... // Define the query limit private val limit = 15 // Initial query val query = productsRef.orderBy("productName", Query.Direction.ASCENDING).limit(limit) query.get().addOnCompleteListener { task -> if (task.isSuccessful) { for (document in task.result!!) { val productModel = document.toObject(ProductModel::class.java) list.add(productModel) } productAdapter.notifyDataSetChanged() lastVisible = task.result!!.documents[task.result!!.size() - 1] // RecyclerView scroll listener recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() { override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) { super.onScrollStateChanged(recyclerView, newState) if (newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) { isScrolling = true } } override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { super.onScrolled(recyclerView, dx, dy) val linearLayoutManager = recyclerView.layoutManager as LinearLayoutManager val firstVisibleItemPosition = linearLayoutManager.findFirstVisibleItemPosition() val visibleItemCount = linearLayoutManager.childCount val totalItemCount = linearLayoutManager.itemCount if (isScrolling && (firstVisibleItemPosition + visibleItemCount == totalItemCount) && !isLastItemReached) { isScrolling = false val nextQuery = productsRef.orderBy("productName", Query.Direction.ASCENDING).startAfter(lastVisible).limit(limit) nextQuery.get().addOnCompleteListener { t -> if (t.isSuccessful) { for (d in t.result!!) { val productModel = d.toObject(ProductModel::class.java) list.add(productModel) } productAdapter.notifyDataSetChanged() lastVisible = t.result!!.documents[t.result!!.size() - 1] if (t.result!!.size() < limit) { isLastItemReached = true } } } } } }) } } // ...
Die Die bereitgestellte Lösung verwaltet die Paginierung für RecyclerView in einem Scrolling-Szenario effizient. Es gewährleistet den zeitnahen Datenabruf beim Scrollen durch den Benutzer und sorgt so für ein nahtloses Ladeerlebnis.
Das obige ist der detaillierte Inhalt vonWie kann ich Firestore-Daten für Android RecyclerView Scrolling effizient paginieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!