首页 > 解决方案 > android studio FirebaseRecyclerAdapter

问题描述

这是代码,这是错误消息,我不知道我在做什么,所以你能为它做什么,所以错误意味着我不知道。我所知道的,我不知道我应该为这种问题做些什么,所以如果可以修复它或者有人知道我怎样才能正确运行它,所以去吧。

图片中显示的错误:https ://i.stack.imgur.com/QJl7o.png

这是menuviewholder:

    public class MenuViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        public TextView txtMenuName;
        public ImageView imageView;


        private ItemClickListener itemClickListener;

        public MenuViewHolder(View itemView){
            super(itemView);
            txtMenuName = (TextView)itemView.findViewById(R.id.menu_name);
            imageView = (ImageView)itemView.findViewById(R.id.menu_image);

            itemView.setOnClickListener(this);
        }

        public void setItemClickListener(ItemClickListener itemClickListener) {
            this.itemClickListener = itemClickListener;
        }

        @Override
        public void onClick(View view)
        {
            itemClickListener.onClick(view,getAdapterPosition(),false);
        }
    }

https://i.stack.imgur.com/f6hEF.png

这是它的负载部​​分和 firbaserec:

   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()
{
    FirebaseRecyclerAdapter<Category, MenuViewHolder>
            adapter =new FirebaseRecyclerAdapter <Category, MenuViewHolder>(Category.class,menu_item,MenuViewHolder.class,categorys) {
        @Override
        protected void onBindViewHolder(@NonNull MenuViewHolder holder, int position, @NonNull Category model) {
            holder.txtMenuName.setText(model.getName());
            Picasso.get().load(model.getImage()).into(holder.imageView);
            final Category clickItem = model;
            holder.setItemClickListener(new ItemClickListener() {
                @Override
                public void onClick(View viw, int position, boolean isLongClick) {
                    Toast.makeText(Home.this, ""+clickItem.getName(), Toast.LENGTH_SHORT).show();
                }
            });
        }

        @NonNull
        @Override
        public MenuViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
            return null;
        }
    };
    recycler_menu.setAdapter(adapter);
}

标签: javaandroidfirebase

解决方案


问题是 FirebaseUI 的最新版本 (3.x) 实现了与以前版本不同的初始化 FirebaseRecyclerAdapter 的方法。

阅读此内容以获得有关此FirebaseUI 文档的更多说明。

从文档中,您可以了解所有内容,但简而言之:

首先,通过构建 FirebaseRecyclerOptions 来配置适配器。我使用了文档中的相同示例。

FirebaseRecyclerOptions<Chat> options =
                    new FirebaseRecyclerOptions.Builder<Chat>()
                            .setQuery(query, Chat.class)
                            .build();

接下来创建FirebaseRecyclerAdapter对象。您应该已经有一个ViewHolder用于显示每个项目的子类。你现在应该可以做到了。


推荐阅读