Firebase不会更新查询

时间:2017-04-23 20:55:49

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

我有这个代码用于从数据库中检索我的数据并在我的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();
}
}

0 个答案:

没有答案
相关问题