首页 > 解决方案 > 变量适配器可能尚未初始化错误

问题描述

我的编译器不会有它。:( 现在怎么办?我必须完全重写整个应用程序吗?要查看编译器拒绝的行,请按 Ctrl+F 搜索 recycler_menu.setAdapter(adapter);

尝试编译时,编译器告诉我,“错误:变量 celsiusOutput 可能尚未初始化。” recycler_menu.setAdapter(适配器);
如何解决它

private AppBarConfiguration mAppBarConfiguration;
FirebaseDatabase database;
DatabaseReference category;
TextView txtFullName;
RecyclerView recycler_menu;
RecyclerView.LayoutManager layoutManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    Toolbar toolbar = findViewById(R.id.toolbar);
    toolbar.setTitle("Menu");
    setSupportActionBar(toolbar);

    //Init Firebase
    database = FirebaseDatabase.getInstance();
    category = database.getReference("Category");



    FloatingActionButton fab = findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });
    DrawerLayout drawer = findViewById(R.id.drawer_layout);
    NavigationView navigationView = findViewById(R.id.nav_view);
    // Passing each menu ID as a set of Ids because each
    // menu should be considered as top level destinations.
    mAppBarConfiguration = new AppBarConfiguration.Builder(
            R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow)
            .setDrawerLayout(drawer)
            .build();
    NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
    NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
    NavigationUI.setupWithNavController(navigationView, navController);

    //set name for user
    View headerView = navigationView.getHeaderView(0);
    txtFullName = (TextView)findViewById(R.id.txtFullName);

    //error app broken will fix later
    /*txtFullName.setText(Common.currentUser.getName());*/

    //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() {

    final FirebaseRecyclerAdapter<Category, MenuViewHolder> adapter = new FirebaseRecyclerAdapter<Category, MenuViewHolder>(Category.class,R.layout.menu_item,MenuViewHolder.class,category) {
        @Override
        protected void populateViewHolder(MenuViewHolder viewHolder, Category model, int position) {

            viewHolder.txtMenuName.setText(model.getName());

            Picasso.get().load(model.getImage())
                    .into(viewHolder.imageView);

            Category clickItem = model;
            viewHolder.setItemClickListener(new ItemClickListener() {
                @Override
                public void onClick(View view, int position, boolean isLongClick) {

                    Toast.makeText(Home.this, "", Toast.LENGTH_SHORT).show();
                }
            });

            recycler_menu.setAdapter(adapter);

        }
    };
}

标签: javafirebaseandroid-studio

解决方案


将这一行recycler_menu.setAdapter(adapter);放在声明块之外,如下所示。

private void LoadMenu() {

        final FirebaseRecyclerAdapter<Category, MenuViewHolder> adapter = new FirebaseRecyclerAdapter<Category, MenuViewHolder>(Category.class,R.layout.menu_item,MenuViewHolder.class,category) {
            @Override
            protected void populateViewHolder(MenuViewHolder viewHolder, Category model, int position) {

                viewHolder.txtMenuName.setText(model.getName());

                Picasso.get().load(model.getImage())
                        .into(viewHolder.imageView);

                Category clickItem = model;
                viewHolder.setItemClickListener(new ItemClickListener() {
                    @Override
                    public void onClick(View view, int position, boolean isLongClick) {

                        Toast.makeText(Home.this, "", Toast.LENGTH_SHORT).show();
                    }
                });
           }
        };

        recycler_menu.setAdapter(adapter);
    }

推荐阅读