Android Firebase没有';t更新查询
我有从数据库中检索数据的代码,并将其显示在我的recyclerview中,但我不知道如何更新查询以生成无休止的数据列表。我在很多帖子中搜索,但我是android和firebase的新手,这对我来说很复杂 scrolllistener中的toast只显示第一次(代码在该部分工作),而其他部分不显示,因为int页面更改了其值,而recyclerview不显示其他元素。 我希望你能帮助我,提前谢谢,为我的英语不好感到抱歉Android Firebase没有';t更新查询,android,firebase,firebase-realtime-database,android-recyclerview,firebaseui,Android,Firebase,Firebase Realtime Database,Android Recyclerview,Firebaseui,我有从数据库中检索数据的代码,并将其显示在我的recyclerview中,但我不知道如何更新查询以生成无休止的数据列表。我在很多帖子中搜索,但我是android和firebase的新手,这对我来说很复杂 scrolllistener中的toast只显示第一次(代码在该部分工作),而其他部分不显示,因为int页面更改了其值,而recyclerview不显示其他元素。 我希望你能帮助我,提前谢谢,为我的英语不好感到抱歉 public class FragmentPrincipal extends F
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();
}
}
公共类FragmentPrincipal扩展了片段{
私人回收站;
专用数据库参考数据引用;
专用GridLayoutManager GridLayoutManager;
私人FirebaseRecyclerAdapter FirebaseRecyclerAdapter;
私有int itemsPerPage=6,page=1;
私有int visibleItemCount;
私有布尔加载;
私有查询;
公共碎片主体(){
}
@凌驾
ActivityCreated上的公共无效(@Nullable Bundle savedinStateCState){
super.onActivityCreated(savedInstanceState);
gridLayoutManager=新的gridLayoutManager(getContext(),2);
setLayoutManager(gridLayoutManager);
dReference=FirebaseDatabase.getInstance().getReference();
mrreference=dReference.child(“评论”);
query=mrreference.orderByChild(“日期”).limitToFirst(第*页,项目页面);
firebaseRecyclerAdapter=新的firebaseRecyclerAdapter
(GuardReview.class,R.layout.columna_reviews,ReviewViewHolder.class,查询){
@凌驾
受保护的void populateViewHolder(ReviewViewHolder viewHolder、GuardReview model、int位置){
最后一个字符串post_key=getRef(位置).getKey();
viewHolder.setTitle(型号:titulo);
setImage(getContext(),model.imagenURL);
viewHolder.mView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent Intent=新的Intent(getActivity(),VerReview.class);
intent.putExtra(“审查id”,发布密钥);
星触觉(意向);
}
});
}
};
recyclerView.setAdapter(firebaseRecyclerAdapter);
recyclerView.addOnScrollListener(新的recyclerView.OnScrollListener(){
@凌驾
已填空的公共空间(RecyclerView RecyclerView、int dx、int dy){
super.onScrolled(recyclerView、dx、dy);
如果(dy>=0){
如果(!加载){
visibleItemCount=gridLayoutManager.getChildCount();
如果(visibleItemCount>=(第页*itemsPerPage)){
page++;
Toast.makeText(getContext(),“Fin de la lista”,Toast.LENGTH_SHORT.show();
加载=真;
recyclerView.post(新的Runnable(){
公开募捐{
firebaseRecyclerAdapter.notifyDataSetChanged();
}
});
}
}
加载=假;
}
}
});
}
@凌驾
创建视图时的公共视图(LayoutFlater Inflator、ViewGroup Contendor、Bundle savedInstanceState){
视图视景=充气器充气(R.layout.inicio_fragment,contendor,false);
recyclerView=(recyclerView)vista.findViewById(R.id.recycler\u视图);
recyclerView.setHasFixedSize(true);
返回视野;
}
公共静态类ReviewViewHolder扩展了RecyclerView.ViewHolder{
视图视图;
公共审阅视图持有者(查看项目视图){
超级(项目视图);
mView=项目视图;
}
公共无效集合标题(字符串标题){
TextView review_titulo=(TextView)mView.findViewById(R.id.review_titulo);
审查titulo.setText(标题);
}
公共void setImage(上下文上下文,字符串imagenURL){
ImageView review\u imagen=(ImageView)mView.findViewById(R.id.review\u imagen);
毕加索.with(context).load(imagenURL).placeholder(R.drawable.loading3).into(review\u imagen);
}
}
@凌驾
公共空间{
super.ondestory();
firebaseRecyclerAdapter.cleanup();
}
}