问题描述
我的 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 列表中) 方法,然后将其传递给适配器构造函数