Это мой исходный код:
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)