Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to Pass Values from Adapter to Activity
    text
    copied!<p>I am trying to show list of Items along with GrandTotal Amount, but whenever i use this code in my code getting <strong>NullPointerException</strong>, see below that code:</p> <pre><code>if (Constants.sItem_Detail.size() &gt; 0) { Double mGTotal = Double.parseDouble(Constants.sItem_Detail.get(0).get(com.example.sample.CartAdapter.KEY_TOTAL)); for (int i = 1; i &lt; 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); </code></pre> <p>Particularly, while i use these lines getting Error:</p> <pre><code>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)); </code></pre> <p>i have tried with below code: </p> <pre><code>if (Constants.sItem_Detail.size() &gt; 0) { Toast.makeText(getApplicationContext(), "Constants is Greater Than 0", Toast.LENGTH_LONG).show(); } else { Toast.makeText(getApplicationContext(), "Constants is Less Than &lt; 0", Toast.LENGTH_LONG).show(); } </code></pre> <p>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 ? </p> <pre><code>Double.parseDouble(Constants.sItem_Detail.get(0).get(com.example.sample.CartAdap‌​‌​ter.KEY_TOTAL)); </code></pre> <p>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?</p> <p>Here is complete code:</p> <p><strong>CartActivity.java:</strong></p> <pre><code>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() &gt; 0) { Double mGTotal = Double.parseDouble(Constants.sItem_Detail.get(0).get(com.example.sample.CartAdapter.KEY_TOTAL)); for (int i = 1; i &lt; 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&lt;?&gt; 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(); } } </code></pre> <p><strong>CartAdapter.java:</strong></p> <pre><code> 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&lt;String, String&gt; item = new HashMap&lt;String, String&gt;(); 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; } } </code></pre> <p><strong>Logcat:</strong></p> <pre><code>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 </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload