Java NullPointerException при вызове метода интерфейса java.lang.Object [] java.util.Collection.toArray () - PullRequest
1 голос
/ 14 октября 2019

Это мой исходный код:

public class ListorderActivity extends AppCompatActivity {


    TextView lblTotal;
    ListView listView;
    MealClass mealDetails;
    MealListDataAdapter mealAdapter;
    ArrayList<OrderClassDetail> orderlist;
    float totalPrice;

    private class MealListDataAdapter extends ArrayAdapter<OrderClassDetail> {
        int layoutResID;
      ArrayList<OrderClassDetail> mealList = new ArrayList<>();

        private class ViewHolder {
            Button btndelete;
            ImageView imgmeal;
            TextView lblName;
            TextView lblPrice;
            TextView lblQuantity;
            TextView lblSaltSpicy;
            TextView lblSoup;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder;
            String soupStr;
            View view = convertView;
            if (convertView == null) {
                view = ((LayoutInflater) ListorderActivity.this.getSystemService("layout_inflater")).inflate(this.layoutResID, null);
                holder = new ViewHolder();
                holder.lblName = (TextView) view.findViewById(R.id.txtOrderMealName);
                holder.lblPrice = (TextView) view.findViewById(R.id.txtOrderMealPrice);
                holder.lblSoup = (TextView) view.findViewById(R.id.txtOrderMealSoup);
                holder.lblSaltSpicy = (TextView) view.findViewById(R.id.txtSaltSpicy);
                holder.lblQuantity = (TextView) view.findViewById(R.id.txtOrderMealQuantity);
                holder.imgmeal = (ImageView) view.findViewById(R.id.mealOrder);
                holder.btndelete = (Button) view.findViewById(R.id.delete);
                view.setTag(holder);

                holder.btndelete.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        mealAdapter.remove((OrderClassDetail) ((Button) v).getTag());
                        mealAdapter.notifyDataSetChanged();
                    }
                });

            } else {
                holder = (ViewHolder) view.getTag();
            }
            try {
                OrderClassDetail mealObj = (OrderClassDetail) this.mealList.get(position);
                int mealOrderNo = mealObj.getMealNo();
                String str = BuildConfig.FLAVOR;
                if (mealObj.isHaveSoup()) {
                    soupStr = "with Soup";
                } else {
                    soupStr = "no Soup";
                }
                holder.lblName.setText(ListorderActivity.this.mealDetails.getMealName(mealOrderNo));
                TextView textView = holder.lblPrice;
                StringBuilder sb = new StringBuilder();
                sb.append("Price/meal: ");
                sb.append(ListorderActivity.this.mealDetails.getMealPrice(mealOrderNo));
                textView.setText(sb.toString());
                TextView textView2 = holder.lblSoup;
                StringBuilder sb2 = new StringBuilder();
                sb2.append("Adds On: ");
                sb2.append(soupStr);
                textView2.setText(sb2.toString());
                TextView textView3 = holder.lblSaltSpicy;
                StringBuilder sb3 = new StringBuilder();
                sb3.append("Salt: ");
                sb3.append(mealObj.getSaltPercent());
                sb3.append("% : Spice: ");
                sb3.append(mealObj.getSpicyPercent());
                sb3.append("%");
                textView3.setText(sb3.toString());
                TextView textView4 = holder.lblQuantity;
                StringBuilder sb4 = new StringBuilder();
                sb4.append("No. of Order(s): ");
                sb4.append(mealObj.getOrderQuantity());
                textView4.setText(sb4.toString());
                holder.imgmeal.setBackgroundResource(ListorderActivity.this.mealDetails.getMealImage(mealOrderNo));
                holder.btndelete.setTag(mealObj);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return view;

        }

        public MealListDataAdapter(Context context, int resourceLayoutID,ArrayList<OrderClassDetail> listObj) {
            super(context, resourceLayoutID, listObj);
            layoutResID = resourceLayoutID;
            mealList.addAll(listObj);
        }

        public void addAll(ArrayList<OrderClassDetail> obj) {
            mealList.clear();
            mealList.addAll(obj);
        }

        public void remove(OrderClassDetail object) {
            super.remove(object);
            mealList.remove(object);
            ListorderActivity.this.totalPrice = 0.0f;
            Iterator it = this.mealList.iterator();
            while (it.hasNext()) {
                OrderClassDetail orbobj = (OrderClassDetail) it.next();
                int mealOrderNo = orbobj.getMealNo();
                int quant = orbobj.getOrderQuantity();
                ListorderActivity.this.totalPrice += ListorderActivity.this.mealDetails.getMealPrice(mealOrderNo) * ((float) quant);
                TextView textView = ListorderActivity.this.lblTotal;
                StringBuilder sb = new StringBuilder();
                sb.append("Total Amount: Php ");
                sb.append(String.format("%.2f", new Object[]{Float.valueOf(ListorderActivity.this.totalPrice)}));
                textView.setText(sb.toString());
            }
        }


    }


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_listorder_activityy);

        mealDetails = new MealClass();
        orderlist = (ArrayList) getIntent().getSerializableExtra("oderList");
        lblTotal = (TextView) findViewById(R.id.txtTotalPrice);
        listView = (ListView) findViewById(R.id.listView);
        mealAdapter = new ListorderActivity.MealListDataAdapter(getBaseContext(), R.layout.custom_listview_layout,this.orderlist);
        listView.setAdapter(this.mealAdapter);
        Iterator it = orderlist.iterator();
        while (it.hasNext()) {
            OrderClassDetail orbobj = (OrderClassDetail) it.next();
            totalPrice += mealDetails.getMealPrice(orbobj.getMealNo()) * ((float) orbobj.getOrderQuantity());
            TextView textView = lblTotal;
            StringBuilder sb = new StringBuilder();
            sb.append("Total Amount: Php ");
            sb.append(String.format("%,.2f", new Object[]{Float.valueOf(this.totalPrice)}));
            textView.setText(sb.toString());
        }
    }

Мой след стека:

Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object[] java.util.Collection.toArray()' on a null object reference
        at java.util.ArrayList.addAll(ArrayList.java:188)
        at com.example.myhappymeal.ListorderActivity$MealListDataAdapter.<init>(ListorderActivity.java:120)
        at com.example.myhappymeal.ListorderActivity.onCreate(ListorderActivity.java:158)
        at android.app.Activity.performCreate(Activity.java:5990)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2280)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392) 
        at android.app.ActivityThread.access$800(ActivityThread.java:153) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5293) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...