即使我有项目,我的 RecyclerView 适配器的 getItemCount() 也返回 0

问题描述

我的 RecyclerView 返回 getItemCount() 为 0,即使我有项目。可能是什么原因?

活动中

int length = mAdapter.getItemCount();

在适配器中

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

我活动中的 onCreate() 方法


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

            }
        });
}


解决方法

您应该放置您的适配器类,以便其他人可以轻松提供帮助,但无论如何。 您将 reportItems 传递给 onCreate() 中的适配器构造函数,但我没有看到您已经初始化它并且没有将任何项目放入列表中,尝试初始化它并将任何项目放入 onCreate() 中的 reportItems 列表中) 方法,然后将其传递给适配器构造函数

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...