代码之家  ›  专栏  ›  技术社区  ›  uzaysan

Firebase recyclerview适配器分页

  •  0
  • uzaysan  · 技术社区  · 7 年前

    我正在使用带有FirebaseRecyclerAdapter的RecyclerView。但是当我运行我的应用程序时。RecyclerView加载所有数据。但我想先加载10个项目,然后用户达到底部加载另外10个。

    我搜索了分页,但是所有的教程都自动假设我将数据保存在我给适配器的引用中,但是“保持这样的数据”。

    Actual Post data tree

    所有post数据都存储在“post All”父项下。

    User Main feed

    用户运行app recycler view从那里获取第二个picture get post key并创建新引用,然后加载数据。

    我的代码:

    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键,创建对实际数据的新数据库引用,然后加载数据。但是我想在begging时加载10个项,然后当用户到达recyclerview底部时再加载10个项。

    0 回复  |  直到 7 年前