【发布时间】:2021-02-28 12:46:05
【问题描述】:
我的RecyclerView 返回 0 的 getItemCount(),即使我有项目。可能是什么原因?
活动中
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();
}
});
}
【问题讨论】:
-
你有没有试过在
getItemCount()被调用时检查reportlist的内容? -
@GauthamM 我试过了,但它给出了错误 -
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0。我可以在我的活动的回收站视图中看到该项目 -
你确定对象是一样的吗?
-
是的。如果我点击我的活动上的一个按钮来获取项目计数,那么它会返回正确的计数。但是,在
onCreate()中,它总是返回 0 -
@GauthamM 我似乎无法弄清楚这是为什么,这很奇怪
标签: java android android-recyclerview android-adapter