如何从适配器获取项目并将其存储在列表中?
How to get the items from adapter and store it in list?
我正在从 adapter
获取列表,该列表工作正常。现在我需要在单击按钮时将其存储在 MainActivity
中的列表中。但是我崩溃了,
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.savedayreq.RoutePlanDayRequests.setPartnerId(java.lang.String)' on a null object reference
at com.view.RoutePlanVisitChangeActivity.onClick(RoutePlanVisitChangeActivity.java:92)
第 92 行是这段代码。
submitChangeRequest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
adapter = (RoutePlanVisitChangeAdapter) mRecyclerView.getAdapter();
List<RoutePlanDayRequests> routePlanDayRequests=null;
RoutePlanDayRequests requests = null;
for (int i = 0; i < adapter.getItemCount(); i++) {
Retailers selectedView = adapter.getItem(i);
View dataView = mRecyclerView.getChildAt(i);
Spinner toDaySpinner = (Spinner) dataView.findViewById(R.id.to_day);
//i can print this oldDay,newDay, msisdn line..
String oldDay = selectedView.getRoutePlanDayOfWeek();
String newDay = toDaySpinner.getSelectedItem().toString();
String msisdn = selectedView.getMsisdn(); //i can also print this line in log.
//***But I am getting crash from this line no 92..***
requests.setPartnerId(selectedView.getMsisdn());
requests.setParentPartnerId(selectedView.getMsisdn());
requests.setApproverId("1");
requests.setStatus("0");
requests.setRetailerPrmId(selectedView.getMsisdn());
requests.setOldDay(oldDay);
requests.setNeweDay(newDay);
routePlanDayRequests.add(requests);
updateServiceList(AppUtils.getMsisdn(mSharedPreferences),routePlanDayRequests);
}
您应该从 RoutePlanDayRequests 创建一个新对象,然后您可以设置该对象的变量
更改此行:
RoutePlanDayRequests requests = null
至
RoutePlanDayRequests requests = new RoutePlanDayRequests()
如果 RoutePlanDayRequests 有空的 cunstructor
初始化这个RoutePlanDayRequests
class
RoutePlanDayRequests requests = new RoutePlanDayRequests();
您没有初始化这 2 个对象。它们被设置为空。
List<RoutePlanDayRequests> routePlanDayRequests=null;
RoutePlanDayRequests requests = null;
像这样初始化它们 -
List<RoutePlanDayRequests> routePlanDayRequests= new Arraylist();
RoutePlanDayRequests requests = new RoutePlanDayRequests();
您 RoutePlanDayRequests
需要一个 public 构造函数。在你 RoutePlanDayRequests
class 添加这个构造函数。
public RoutePlanDayRequests() {
}
我正在从 adapter
获取列表,该列表工作正常。现在我需要在单击按钮时将其存储在 MainActivity
中的列表中。但是我崩溃了,
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.savedayreq.RoutePlanDayRequests.setPartnerId(java.lang.String)' on a null object reference at com.view.RoutePlanVisitChangeActivity.onClick(RoutePlanVisitChangeActivity.java:92)
第 92 行是这段代码。
submitChangeRequest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
adapter = (RoutePlanVisitChangeAdapter) mRecyclerView.getAdapter();
List<RoutePlanDayRequests> routePlanDayRequests=null;
RoutePlanDayRequests requests = null;
for (int i = 0; i < adapter.getItemCount(); i++) {
Retailers selectedView = adapter.getItem(i);
View dataView = mRecyclerView.getChildAt(i);
Spinner toDaySpinner = (Spinner) dataView.findViewById(R.id.to_day);
//i can print this oldDay,newDay, msisdn line..
String oldDay = selectedView.getRoutePlanDayOfWeek();
String newDay = toDaySpinner.getSelectedItem().toString();
String msisdn = selectedView.getMsisdn(); //i can also print this line in log.
//***But I am getting crash from this line no 92..***
requests.setPartnerId(selectedView.getMsisdn());
requests.setParentPartnerId(selectedView.getMsisdn());
requests.setApproverId("1");
requests.setStatus("0");
requests.setRetailerPrmId(selectedView.getMsisdn());
requests.setOldDay(oldDay);
requests.setNeweDay(newDay);
routePlanDayRequests.add(requests);
updateServiceList(AppUtils.getMsisdn(mSharedPreferences),routePlanDayRequests);
}
您应该从 RoutePlanDayRequests 创建一个新对象,然后您可以设置该对象的变量 更改此行:
RoutePlanDayRequests requests = null
至
RoutePlanDayRequests requests = new RoutePlanDayRequests()
如果 RoutePlanDayRequests 有空的 cunstructor
初始化这个RoutePlanDayRequests
class
RoutePlanDayRequests requests = new RoutePlanDayRequests();
您没有初始化这 2 个对象。它们被设置为空。
List<RoutePlanDayRequests> routePlanDayRequests=null;
RoutePlanDayRequests requests = null;
像这样初始化它们 -
List<RoutePlanDayRequests> routePlanDayRequests= new Arraylist();
RoutePlanDayRequests requests = new RoutePlanDayRequests();
您 RoutePlanDayRequests
需要一个 public 构造函数。在你 RoutePlanDayRequests
class 添加这个构造函数。
public RoutePlanDayRequests() {
}