如何从适配器获取项目并将其存储在列表中?

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

初始化这个RoutePlanDayRequestsclass

  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() {
}