I am trying to show list of Items along with GrandTotal Amount, but whenever i use this code in my code getting NullPointerException, see below that code:
if (Constants.sItem_Detail.size() > 0) {
Double mGTotal = Double.parseDouble(Constants.sItem_Detail.get(0).get(com.example.sample.CartAdapter.KEY_TOTAL));
for (int i = 1; i < Constants.sItem_Detail.size(); i++) {
mGTotal = mGTotal + Double.parseDouble(Constants.sItem_Detail.get(i).get(com.example.sample.CartAdapter.KEY_TOTAL));
}
mGrandTotal = String.valueOf(new DecimalFormat("##.#").format(mGTotal));
mTxtViewGrandTotal.setText(mGrandTotal);
myTextVeiwGrandTotal.setText(mGrandTotal);
Particularly, while i use these lines getting Error:
Double mGTotal = Double.parseDouble(Constants.sItem_Detail.get(0).get(com.example.sample.CartAdapter.KEY_TOTAL));
mGTotal = mGTotal + Double.parseDouble(Constants.sItem_Detail.get(i).get(com.example.sample.CartAdapter.KEY_TOTAL));
i have tried with below code:
if (Constants.sItem_Detail.size() > 0) {
Toast.makeText(getApplicationContext(), "Constants is Greater Than 0", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "Constants is Less Than < 0", Toast.LENGTH_LONG).show();
}
and getting Constants is Greater Than 0, and showing number of items in Cart is 1
but whenever i use this line in my code getting problem, is it the right way to get value from adapter to activity ?
Double.parseDouble(Constants.sItem_Detail.get(0).get(com.example.sample.CartAdap????ter.KEY_TOTAL));
Actually i am calculating total amount of each and every item in Adapter class and now trying to show sum of all total amount as grand total in Activity, but facing problem, tell me where i am doing mistake?
Here is complete code:
CartActivity.java:
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart);
mLstView1 = (ListView) findViewById(R.id.listView1);
mTxtViewGrandTotal = (TextView) findViewById(R.id.bill_amount);
myTextVeiwGrandTotal =(TextView) findViewById(R.id.mTxtViewGrandTotalValue);
mItems = (TextView) findViewById(R.id.total_items);
mTax =(TextView) findViewById(R.id.taxes);
mDeliveryCharges =(TextView) findViewById(R.id.delivery_charges);
mDiscount =(TextView) findViewById(R.id.discount);
mPackaging =(TextView) findViewById(R.id.packaging);
if (Constants.sItem_Detail.size() > 0) {
Double mGTotal = Double.parseDouble(Constants.sItem_Detail.get(0).get(com.example.sample.CartAdapter.KEY_TOTAL));
for (int i = 1; i < Constants.sItem_Detail.size(); i++) {
mGTotal = mGTotal + Double.parseDouble(Constants.sItem_Detail.get(i).get(com.example.sample.CartAdapter.KEY_TOTAL));
}
mGrandTotal = String.valueOf(new DecimalFormat("##.#").format(mGTotal));
mTxtViewGrandTotal.setText(mGrandTotal);
myTextVeiwGrandTotal.setText(mGrandTotal);
mTaxes = String.valueOf(mTax);
mTax.setText("0");
mDelivery = String.valueOf(mDeliveryCharges);
mDeliveryCharges.setText("0");
mTotal = String.valueOf(Constants.sItem_Detail.size());
mItems.setText(mTotal);
}
mViewCartAdpt = new CartAdapter(CartActivity.this);
mLstView1.setAdapter(mViewCartAdpt);
mLstView1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, final int position, long id) {
//
}
});
}
// Called when the activity begins interacting with the user
@Override
protected void onResume() {
super.onResume();
mViewCartAdpt.notifyDataSetChanged();
}
}
CartAdapter.java:
public class CartAdapter extends BaseAdapter {
public static final String LOG_TAG = "CartAdapter";
public static final String KEY_TITLE = "title";
public static final String KEY_COST = "cost";
public static final String KEY_QTY = "qty";
public static final String KEY_TOTAL = "total";
Activity activity;
LayoutInflater inflater;
ImageButton mImgBtnDelete;
ListView listView;
private double itemamount = 0;
private int itemquantity = 0;
public CartAdapter(Activity a) {
// TODO Auto-generated constructor stub
activity = a;
inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
// TODO Auto-generated method stub
return Constants.sItem_Detail.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View vi = convertView;
if (convertView == null)
vi = inflater.inflate(R.layout.listrow_cart, null); // listrow_cart
vi.setClickable(true);
vi.setFocusable(true);
vi.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
}
});
mImgBtnDelete = (ImageButton) vi
.findViewById(R.id.mImgBtnDelete);
mImgBtnDelete.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Constants.sItem_Detail.remove(position);
notifyDataSetChanged();
Intent mInViewCartRefresh = new Intent(activity,
CartActivity.class);
activity.startActivity(mInViewCartRefresh);
activity.finish();
}
});
final TextView title = (TextView) vi.findViewById(R.id.title);
final EditText qty = (EditText) vi.findViewById(R.id.qty);
final TextView cost = (TextView) vi.findViewById(R.id.cost);
final TextView total = (TextView) vi.findViewById(R.id.total);
HashMap<String, String> item = new HashMap<String, String>();
item = Constants.sItem_Detail.get(position);
// Setting all values in listview
title.setText(item.get(com.example.sample.ItemsActivity.KEY_TITLE));
cost.setText(item.get(com.example.sample.ItemsActivity.KEY_COST));
qty.setText("1");
itemquantity = Integer.parseInt(qty.getText().toString());
itemamount = Double.parseDouble(cost.getText().toString());
total.setText(new DecimalFormat("##.#").format(itemamount*itemquantity));
qty.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
if (!qty.getText().toString().equals("")
|| !qty.getText().toString().equals("")) {
// accept quantity by user
itemquantity = Integer.parseInt(qty.getText()
.toString());
// changes in total amount as per change in qty (entered by user)
total.setText(new DecimalFormat("##.#").format(itemamount*itemquantity));
} else {
total.setText("0.00");
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
}
});
return vi;
}
}
Logcat:
07-02 05:05:29.411: D/AndroidRuntime(802): Shutting down VM
07-02 05:05:29.420: W/dalvikvm(802): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
07-02 05:05:29.501: E/AndroidRuntime(802): FATAL EXCEPTION: main
07-02 05:05:29.501: E/AndroidRuntime(802): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sample/com.example.sample.CartActivity}: java.lang.NullPointerException
07-02 05:05:29.501: E/AndroidRuntime(802): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
07-02 05:05:29.501: E/AndroidRuntime(802): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
07-02 05:05:29.501: E/AndroidRuntime(802): at android.app.ActivityThread.access$600(ActivityThread.java:141)
07-02 05:05:29.501: E/AndroidRuntime(802): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
07-02 05:05:29.501: E/AndroidRuntime(802): at android.os.Handler.dispatchMessage(Handler.java:99)
07-02 05:05:29.501: E/AndroidRuntime(802): at android.os.Looper.loop(Looper.java:137)
07-02 05:05:29.501: E/AndroidRuntime(802): at android.app.ActivityThread.main(ActivityThread.java:5041)
07-02 05:05:29.501: E/AndroidRuntime(802): at java.lang.reflect.Method.invokeNative(Native Method)
07-02 05:05:29.501: E/AndroidRuntime(802): at java.lang.reflect.Method.invoke(Method.java:511)
07-02 05:05:29.501: E/AndroidRuntime(802): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-02 05:05:29.501: E/AndroidRuntime(802): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-02 05:05:29.501: E/AndroidRuntime(802): at dalvik.system.NativeStart.main(Native Method)
07-02 05:05:29.501: E/AndroidRuntime(802): Caused by: java.lang.NullPointerException
07-02 05:05:29.501: E/AndroidRuntime(802): at java.lang.StringToReal.parseDouble(StringToReal.java:244)
07-02 05:05:29.501: E/AndroidRuntime(802): at java.lang.Double.parseDouble(Double.java:295)
07-02 05:05:29.501: E/AndroidRuntime(802): at com.example.sample.CartActivity.onCreate(CartActivity.java:54)
07-02 05:05:29.501: E/AndroidRuntime(802): at android.app.Activity.performCreate(Activity.java:5104)
07-02 05:05:29.501: E/AndroidRuntime(802): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
07-02 05:05:29.501: E/AndroidRuntime(802): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
07-02 05:05:29.501: E/AndroidRuntime(802): ... 11 more
07-02 05:05:33.180: I/Process(802): Sending signal. PID: 802 SIG: 9
See Question&Answers more detail:
os