getItemCount() of my RecyclerView adapter returns 0 even though I have items in it

Viewed 218

My RecyclerView returns a getItemCount() of 0 even though I have items in it. What can be the reason?

In Activity

int length = mAdapter.getItemCount();

In Adapter

@Override
public int getItemCount() {
    return reportlist.size();
}

onCreate() method in my activity


protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_report_listing);

mRecyclerView = findViewById(R.id.recyclerView);
flightViewModel = new ViewModelProvider(this).get(FlightViewModel.class);
userViewModel = new ViewModelProvider(this).get(UserViewModel.class);

mLayoutManager = new LinearLayoutManager(ReportListingActivity.this);
mAdapter = new ReportAdapter(reportitems, ReportListingActivity.this);

mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setAdapter(mAdapter);

userViewModel.getAllUsers().observe(ReportListingActivity.this, new Observer<List<User>>() {
            @Override
            public void onChanged(List<User> users) {
                user_details = getUsers();
                user_name = user_details[0];
                user_id = user_details[1];

                flights = flightViewModel.getFlightReports(user_name,user_id);
                if (flights.size() == 0) return;

                reportitems.clear();
                reportItemsCopy.clear();

                for(int i = 0; i <flights.size();i++){
                    String flightnumber = flights.get(i).getFlightNumber();
                    String departuredate = flights.get(i).getDate();
                    String status = flights.get(i).getFlight_closure_status();
                    String user_name = flights.get(i).getName();
                    String user_id = flights.get(i).getStaffID();


                    reportitems.add(new ReportItem(flightnumber,departuredate,status, user_name, user_id));


                }
                mAdapter.notifyDataSetChanged();

            }
        });
}


1 Answers

you should put your adapter class to make it easy for others to help, but anyway. you passed reportItems to the adapter constructor in the onCreate() but i don't see that you had initialize it and didn't put any items in the list, try to initialize it and put put any item in reportItems list in the onCreate() method before passing it to adapter constructor

Related