【问题标题】:How to get the items from adapter and store it in list? [duplicate]如何从适配器获取项目并将其存储在列表中? [复制]
【发布时间】:2018-06-22 13:43:10
【问题描述】:

我从adapter 得到列表,它工作正常。现在我需要在单击按钮时将其存储在MainActivity 的列表中。但我正在崩溃,

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void com.savedayreq.RoutePlanDayRequests.setPartnerId(java.lang.String)” 在 com.view.RoutePlanVisitChangeActivity$2.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 requests = null 是问题
  • 这是您所缺乏的基本 JAVA 知识。初始化两个空对象。

标签: android android-layout arraylist android-recyclerview android-adapter


【解决方案1】:

您应该从 RoutePlanDayRequests 创建一个新对象,然后您可以设置该对象的变量 改变这一行:

 RoutePlanDayRequests requests = null

RoutePlanDayRequests requests = new RoutePlanDayRequests()

如果 RoutePlanDayRequests 有空的 cunstructor

【讨论】:

    【解决方案2】:

    初始化这个RoutePlanDayRequests

      RoutePlanDayRequests requests = new RoutePlanDayRequests();
    

    【讨论】:

      【解决方案3】:

      您没有初始化这 2 个对象。它们被设置为 null。

      List<RoutePlanDayRequests> routePlanDayRequests=null;
      RoutePlanDayRequests requests = null;
      

      像这样初始化它们 -

      List<RoutePlanDayRequests> routePlanDayRequests= new Arraylist();
      RoutePlanDayRequests requests = new RoutePlanDayRequests();
      

      您需要一个公共构造函数RoutePlanDayRequests。在你的RoutePlanDayRequests 类中添加这个构造函数。

      public RoutePlanDayRequests() {
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-21
        • 1970-01-01
        • 1970-01-01
        • 2019-10-13
        • 1970-01-01
        • 2020-07-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多