我正在使用带有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个项。