Rumah > Java > javaTutorial > Bagaimana untuk Melaksanakan Penomboran Firestore dengan RecyclerView dalam Android?

Bagaimana untuk Melaksanakan Penomboran Firestore dengan RecyclerView dalam Android?

Barbara Streisand
Lepaskan: 2024-12-29 04:12:10
asal
733 orang telah melayarinya

How to Implement Firestore Pagination with RecyclerView in Android?

Penomboran Firestore dengan RecyclerView untuk Android

Penomboran ialah teknik penting yang digunakan untuk memaparkan set data yang besar dengan cekap dan meningkatkan pengalaman pengguna. Dalam Firestore, penomboran boleh dicapai dengan menggabungkan kursor pertanyaan dan kaedah had().

Penyelesaian:

Untuk menomborkan data Firestore dalam RecyclerView, ikut langkah berikut:

  1. Tentukan global pembolehubah:

    • had (int): Tetapkan had kepada bilangan dokumen yang dimuatkan setiap halaman (cth., 15).
    • lastVisible (DocumentSnapshot): Mewakili yang terakhir dokumen yang boleh dilihat daripada halaman pertanyaan.
    • isScrolling, isLastItemReached (boolean): Bendera untuk menjejak penatalan dan penyiapan halaman terakhir.
  2. Dapatkan pertanyaan awal:

    • Bina pertanyaan Firestore yang disusun mengikut medan (cth., "productName").
    • Gunakan had pada pertanyaan (cth., .limit(had)).
  3. Dapatkan kumpulan awal dokumen:

    • query.get().addOnCompleteListener() mendapatkan semula halaman pertama dokumen daripada pertanyaan.
    • Uraikan dokumen ke dalam kelas model anda (cth., ProductModel ).
    • Tambahkan dokumen pada penyesuai RecyclerView senarai.
  4. Laksanakan penomboran skrol:

    • Lampirkan RecyclerView.OnScrollListener pada RecyclerView.
    • Dalam onScrolled(), semak sama ada pengguna telah sampai ke penghujung halaman semasa dan jika lebih banyak halaman masih perlu dimuatkan.
    • Jika ya, buat pertanyaan baharu bermula selepas dokumen LastVisible dan gunakan had itu sekali lagi.
    • Ambil halaman seterusnya dokumen dan kemas kini penyesuai.
  5. Kendalikan yang terakhir halaman:

    • Semak saiz halaman terakhir yang diambil. Jika kurang daripada had, tetapkan isLastItemReached kepada benar untuk menunjukkan penghujung set data.

Kod Contoh:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference productsRef = rootRef.collection("products");
Query query = productsRef.orderBy("productName", Query.Direction.ASCENDING).limit(limit);

query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            for (DocumentSnapshot document : task.getResult()) {
                ProductModel productModel = document.toObject(ProductModel.class);
                list.add(productModel);
            }
            productAdapter.notifyDataSetChanged();
            lastVisible = task.getResult().getDocuments().get(task.getResult().size() - 1);

            RecyclerView.OnScrollListener onScrollListener = new RecyclerView.OnScrollListener() {
                @Override
                public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                    LinearLayoutManager linearLayoutManager = ((LinearLayoutManager) recyclerView.getLayoutManager());
                    int firstVisibleItemPosition = linearLayoutManager.findFirstVisibleItemPosition();
                    int visibleItemCount = linearLayoutManager.getChildCount();
                    int totalItemCount = linearLayoutManager.getItemCount();

                    if (isScrolling &amp;&amp; (firstVisibleItemPosition + visibleItemCount == totalItemCount) &amp;&amp; !isLastItemReached) {
                        isScrolling = false;
                        Query nextQuery = productsRef.orderBy("productName", Query.Direction.ASCENDING).startAfter(lastVisible).limit(limit);
                        nextQuery.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                            @Override
                            public void onComplete(@NonNull Task<QuerySnapshot> t) {
                                if (t.isSuccessful()) {
                                    for (DocumentSnapshot d : t.getResult()) {
                                        ProductModel productModel = d.toObject(ProductModel.class);
                                        list.add(productModel);
                                    }
                                    productAdapter.notifyDataSetChanged();
                                    lastVisible = t.getResult().getDocuments().get(t.getResult().size() - 1);

                                    if (t.getResult().size() < limit) {
                                        isLastItemReached = true;
                                    }
                                }
                            }
                        });
                    }
                }
            };
            recyclerView.addOnScrollListener(onScrollListener);
        }
    }
});
Salin selepas log masuk

Dengan mengikut langkah ini, anda boleh melaksanakan penomboran yang cekap dan masa nyata untuk data Firestore dalam aplikasi Android anda.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Penomboran Firestore dengan RecyclerView dalam Android?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan