variable adapter might not have been initialized error

M'boss Spondanai :

My compiler won't have it. :( Now what? Do I have to completely rewrite the entire app? To see the line which my compiler is rejecting, do a Ctrl+F search for recycler_menu.setAdapter(adapter);

When trying to compile, I'm told by the compiler, "error : variable celsiusOutput might not have been initialized." recycler_menu.setAdapter(adapter);
how to slove it

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);

        }
    };
}
Rajen Raiyarela :

Bring this line recycler_menu.setAdapter(adapter); outside the declaration block, as done below.

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);
    }

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=195039&siteId=1