Firebase RecyclerView适配器分页

时间:2018-10-09 11:15:42

标签: android firebase-realtime-database android-recyclerview pagination

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

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

Actual Post data tree

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

User Main feed

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

我的代码:

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();

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

place where recyclerview get data

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

0 个答案:

没有答案