【问题标题】:Data is not coming to my app from firebase数据没有从 firebase 传到我的应用程序
【发布时间】:2018-05-09 08:09:53
【问题描述】:

我正在尝试将图像和名称从 Firebase 数据库加载到我在 RecyclerView 中的应用程序,但是当我运行它时,它没有显示图像和名称且没有错误,这是我的代码。

  //Load menu
    recycler_menu=(RecyclerView)findViewById(R.id.recycler_menu);
    recycler_menu.setHasFixedSize(true);
    layoutManager= new LinearLayoutManager(this);
    recycler_menu.setLayoutManager(layoutManager);
    loadMenu();

}
  private void loadMenu(){
      FirebaseRecyclerOptions<Category> options = new FirebaseRecyclerOptions.Builder<Category>().setQuery(category, Category.class).build();
          FirebaseRecyclerAdapter<Category, MenuViewHolder> adapter= new FirebaseRecyclerAdapter<Category, MenuViewHolder>(options){
              @Override
              public MenuViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                  View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.menu_item, parent, false);

                  MenuViewHolder viewHolder = new MenuViewHolder(view);

                  return viewHolder;
              }
           @Override
           protected void onBindViewHolder(MenuViewHolder holder, int position, Category model) {
               holder.txtMenuName.setText(model.getName());
               Picasso.with(getBaseContext()).load(model.getImage()).into(holder.imageView);
           }
           };
       recycler_menu.setAdapter(adapter);
   }

我的代码运行良好,但没有显示图像和名称,显示的是空白活动。请帮忙。

【问题讨论】:

  • This 是您从 Firebase 实时数据库中检索数据并使用 FirebaseRecyclerAdapter 将其显示在 RecyclerView 中的方法。

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


【解决方案1】:

只需在您的OnStart 中添加adapter.startListening() 以启动数据侦听器,并在您的onStop 中添加adapter.stopListening() 以通过这种方式停止它:

@Override
protected void onStart() {
    super.onStart();
    adapter.startListening();
}

@Override
protected void onStop() {
    super.onStop();
    adapter.stopListening();
}

【讨论】:

【解决方案2】:

这是您在使用 Firebase 作为数据库时通常会遇到的主要问题之一。我看不到您在哪里检索数据,但问题很可能是 Firebase 事件侦听器异步工作。以另一种方式,您的方法在检索数据之前返回。在我的项目中,我通过检索 onCreateViewonCreate 上的数据解决了这个问题,然后在其他方法中使用这些值。如果不是这种情况,我只是简单地在事件侦听器中完成工作,如果我必须这样做(这将使您的代码看起来非常复杂且难以阅读)。如果您对 Firebase 及其异步工作方式进行更多研究,将会更有帮助。

如果您以某种方式找到解决此问题的更好方法,请在下方发表评论,以便我也可以使用它。我还在寻找更好的方法。

【讨论】:

  • 这不是答案,应该是评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多