我有这个代码用于从数据库中检索我的数据并在我的recyclerview中显示它,但我不知道如何更新查询以创建无限的数据列表。我在很多帖子中搜索,但我是关于android和firebase的新手,对我而言很复杂。
scrolllistener中的toast只显示第一次(代码在该部分中工作)但其他部分没有,因为int页面改变了他的值,而recyclerview没有显示其他元素。 我希望你能帮助我,提前谢谢,抱歉我的英语不好。
public class FragmentPrincipal extends Fragment {
private RecyclerView recyclerView;
private DatabaseReference dReference, mReference;
private GridLayoutManager gridLayoutManager;
private FirebaseRecyclerAdapter<GuardarReview, ReviewViewHolder> firebaseRecyclerAdapter;
private int itemsPerPage = 6, page = 1;
private int visibleItemCount;
private boolean loading;
private Query query;
public FragmentPrincipal(){
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
gridLayoutManager = new GridLayoutManager(getContext(), 2);
recyclerView.setLayoutManager(gridLayoutManager);
dReference = FirebaseDatabase.getInstance().getReference();
mReference = dReference.child("Reviews");
query = mReference.orderByChild("date").limitToFirst(page * itemsPerPage);
firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<GuardarReview, ReviewViewHolder>
(GuardarReview.class, R.layout.columna_reviews, ReviewViewHolder.class, query ) {
@Override
protected void populateViewHolder(ReviewViewHolder viewHolder, GuardarReview model, int position) {
final String post_key = getRef(position).getKey();
viewHolder.setTitle(model.titulo);
viewHolder.setImage(getContext(), model.imagenURL);
viewHolder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), VerReview.class);
intent.putExtra("review_id", post_key);
startActivity(intent);
}
});
}
};
recyclerView.setAdapter(firebaseRecyclerAdapter);
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (dy >= 0) {
if(!loading){
visibleItemCount = gridLayoutManager.getChildCount();
if(visibleItemCount >= (page * itemsPerPage)){
page++;
Toast.makeText(getContext(), "Fin de la lista", Toast.LENGTH_SHORT).show();
loading = true;
recyclerView.post(new Runnable() {
public void run() {
firebaseRecyclerAdapter.notifyDataSetChanged();
}
});
}
}
loading = false;
}
}
});
}
@Override
public View onCreateView(LayoutInflater inflador, ViewGroup contenedor, Bundle savedInstanceState){
View vista = inflador.inflate(R.layout.inicio_fragment, contenedor, false);
recyclerView = (RecyclerView) vista.findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
return vista;
}
public static class ReviewViewHolder extends RecyclerView.ViewHolder {
View mView;
public ReviewViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setTitle(String title){
TextView review_titulo = (TextView) mView.findViewById(R.id.review_titulo);
review_titulo.setText(title);
}
public void setImage(Context context, String imagenURL){
ImageView review_imagen = (ImageView) mView.findViewById(R.id.review_imagen);
Picasso.with(context).load(imagenURL).placeholder(R.drawable.loading3).into(review_imagen);
}
}
@Override
public void onDestroy() {
super.onDestroy();
firebaseRecyclerAdapter.cleanup();
}
}