首页 > 解决方案 > Firebase recyclerview 适配器分页

问题描述

我将 RecyclerView 与 FirebaseRecyclerAdapter 一起使用。但是当我运行我的应用程序时。RecyclerView 加载所有数据。但我想先加载 10 个项目,然后用户到达底部再加载 10 个。

我搜索了分页,但所有教程都自动假设我将我的数据保留在我给适配器的参考中。但我保留这样的数据。

实际发布数据树

所有帖子数据都存储在“postall”父级下。

用户主要提要

并且用户运行应用程序回收器视图获取第二张图片从那里获取发布密钥并创建新参考然后加载数据。

我的代码:

options = new FirebaseRecyclerOptions.Builder<Post>().setQuery(reference,Post.class).build();
    vhadapter = new FirebaseRecyclerAdapter<Post, viewholder>(options) {
        @Override
        public long getItemId(int position) {
            return position;
        }
        @Override
        public int getItemViewType(int position) {
            return position;
        }

        @Override
        protected void onBindViewHolder(@NonNull final viewholder holder, final int position, @NonNull Post model) {

            getRef(position).addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    DatabaseReference reference1=FirebaseDatabase.getInstance().getReference().child("postall").child(dataSnapshot.getKey());
                    reference1.addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            if(dataSnapshot.exists()){
                                //get data
                            }
                            else{

                            }

                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {

                        }
                    });
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
        }

        @NonNull
        @Override
        public viewholder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
            View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.home_item_image,viewGroup,false);

            return new viewholder(view);
        }
    };
    vhadapter.setHasStableIds(true);
    recyclerView.setAdapter(vhadapter);


    vhadapter.startListening();

在这种情况下我该如何进行分页。

recyclerview 获取数据的地方

Reyler 视图从数据中读取所有这些数据 getpost 键,创建对实际数据的新数据库引用,然后加载数据。但是我想在开始时加载 10 个项目,然后当用户到达 recyclerview 底部时再加载 10 个。

标签: androidfirebase-realtime-databaseandroid-recyclerviewpagination

解决方案


推荐阅读