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

时间:2018-09-08 22:51:31

标签: android firebase google-cloud-firestore firebaseui

我正在使用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();
     }

1 个答案:

答案 0 :(得分:1)

在不做大幅度更改代码的情况下,您无能为力。

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

还有a sample code I wrote和一个示例,其中示例结合使用Android Architecture Components Paging和Firestore和实时数据库。