Android 是否可以将FireStorRecyclerAdapter与分页结合使用?

Android 是否可以将FireStorRecyclerAdapter与分页结合使用?,android,firebase,google-cloud-firestore,firebaseui,Android,Firebase,Google Cloud Firestore,Firebaseui,我使用的是FireStoreRecyclerAdapter,具有检索和显示数据的正常形式 我的数据变得越来越大,我想在其中进行分页,但我没有找到任何关于这一点的教程。我阅读了文档,但没有说明如何做,因为它们只有一个适配器和两个查询,而且FirestorRecyclerAdaper只接受一个查询。 那么,他们的解决方案是不是在不更改我的代码的情况下 final Query query = firebaseFirestore .collection("Ads")

我使用的是
FireStoreRecyclerAdapter
,具有检索和显示数据的正常形式

我的数据变得越来越大,我想在其中进行分页,但我没有找到任何关于这一点的教程。我阅读了文档,但没有说明如何做,因为它们只有一个适配器和两个查询,而且
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();
     }
final Query Query=firebaseFirestore
.收藏(“广告”)
.orderBy(“creationDate”、Query.Direction.DESCENDING)、limit(5);
query.get().addOnSuccessListener(新的OnSuccessListener()){
@凌驾
成功时公共无效(QuerySnapshot QueryDocumentSnapshot){
DocumentSnapshot lastVisible=queryDocumentSnapshots
.getDocuments().get(queryDocumentSnapshots.size()-1);
Query next=firebaseFirestore.collection(“Ads”)
.orderBy(“creationDate”)
.startAfter(最后可见)
.限额(10);
}
});
选项=新FirestoreRecyclerOptions
.Builder()
.setQuery(查询,MyAdCard.class)
.build();
dapter=新FirestoreRecyclerAdapter(选项){
@凌驾
BindViewHolder上的受保护无效(@NonNull final AllCardViewHolder,final int位置,@NonNull MyAdCard型号){
holder.publicAd_description.setText(model.getMyAddDescriptionTXT());
}
@非空
@凌驾
public AllCardViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
View=LayoutInflater.from(parent.getContext())
.充气(R.layout.cardview_categoryads,父级,假);
返回新的AllCardViewHolder(视图);
}
};
类别设置适配器(适配器);
私有类AllCardViewHolder扩展了RecyclerView.ViewHolder{
public AllCardViewHolder(查看项目视图){
超级(项目视图);
}
TextView publicAd_描述=itemView.findViewById(R.id.publicAd_描述);
}
@凌驾
受保护的void onStart(){
super.onStart();
短小精悍地听;
}
@凌驾
受保护的void onStop(){
super.onStop();
if(dapter!=null)dapter.stopListening();
}

在这里,如果不大幅更改代码,您将无能为力

Firebase UI提供了一个可帮助您进行所需更改的功能


还有一个与Firestore和实时数据库一起使用的示例。

是一种推荐的方法,通过将查询游标与limit()方法相结合,可以对查询进行分页。我也建议你看一下这个,以便更好地理解。是的,我看过你的视频,效果很好,但这意味着我必须更改所有代码,这是我必须做的。但是我在你的代码中遇到了一些问题。第一:我无法获得与数据库中的文档相似的id。第二,我注意到我在下面重复了我的回收者视图中第一个项目中的一些项目。在这种情况下,请发布另一个包含的问题,以便我和其他用户可以帮助你。我将其作为问题发布,你可以看一下吗?