我尝试将图片和名称从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);
}
我的代码运行正常,但图片和名称未显示,显示空白活动。请帮忙。
答案 0 :(得分:1)
只需在adapter.startListening()
中添加OnStart
即可启动数据监听器,并在adapter.stopListening()
中添加onStop
以通过这种方式停止:
@Override
protected void onStart() {
super.onStart();
adapter.startListening();
}
@Override
protected void onStop() {
super.onStop();
adapter.stopListening();
}
答案 1 :(得分:0)
这是使用Firebase作为数据库时通常会遇到的主要问题之一。我无法看到您检索数据的位置,但问题很可能是Firebase事件侦听器异步工作。换句话说,您的方法返回之前检索数据。在我的项目中,我通过检索 onCreateView 或 onCreate 上的数据解决了这个问题,然后在其他方法中使用这些值。如果不是这样的话,我只是简单地在事件监听器中完成工作,如果必须的话(它将使你的代码看起来非常复杂和不可读)。如果您对Firebase及其异步工作方式进行更多研究,将会更有帮助。
如果您以某种方式找到更好的解决方法,请在下方发表评论,以便我也可以使用它。我仍在寻求更好的方式。