是否可以将FirestorRecyclerAdaper与分页相结合?



我正在使用FirestoreRecyclerAdaper来检索和显示数据的正常形式。

我的数据变大了,我想在其中进行分页,但到目前为止我没有找到任何教程。我阅读了文档,但没有显示如何做到这一点,因为只有一个适配器和 2 个查询,FirestorRecyclerAdaper只接受一个查询。 那么他们是否在不更改我的代码的情况下提供解决方案?

final Query query = firebaseFirestore
.collection("Ads")
.orderBy("creationDate", Query.Direction.DESCENDING).limit(5);
query.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
DocumentSnapshot lastVisible = queryDocumentSnapshots
.getDocuments().get(queryDocumentSnapshots.size() - 1);

Query next = firebaseFirestore.collection("Ads")
.orderBy("creationDate")
.startAfter(lastVisible)
.limit(10);

}
});
options = new FirestoreRecyclerOptions
.Builder<MyAdCard>()
.setQuery(query, MyAdCard.class)
.build();
dapter = new FirestoreRecyclerAdapter<MyAdCard, AllCardViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull final AllCardViewHolder holder, final int position, @NonNull MyAdCard model) {
holder.publicAd_discription.setText(model.getMyAddiscriptiontxt());

}
@NonNull
@Override
public AllCardViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.cardview_categoryads, parent, false);
return new AllCardViewHolder(view);
}
};
categoryAdsRV.setAdapter(dapter);
private class AllCardViewHolder extends RecyclerView.ViewHolder {
public AllCardViewHolder(View itemView) {
super(itemView);
}
TextView publicAd_discription = itemView.findViewById(R.id.publicAd_Discription);
}
@Override
protected void onStart() {
super.onStart();
dapter.startListening();
}
@Override
protected void onStop() {
super.onStop();
if ( dapter != null ) dapter.stopListening();
}

如果不对代码进行重大更改,您将无法在此处执行任何操作。

Firebase-UI中有一个FirestorePagingAdapter可以帮助您进行所需的更改。

还有一个我编写的示例代码,其中包含一个使用 Android 架构组件分页以及 Firestore 和实时数据库的示例。

最新更新