我正在使用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();
}
答案 0 :(得分:1)
在不做大幅度更改代码的情况下,您无能为力。
Firebase-UI中有一个FirestorePagingAdapter,可以帮助您进行所需的更改。
还有a sample code I wrote和一个示例,其中示例结合使用Android Architecture Components Paging和Firestore和实时数据库。