-1

I am sorry to disturb you...but i have searched for my issue on SO but fails to fix it...

PLAN

I have a listView populated with volley...i want when user click on any item of listView ,it get selected (user can select multiple list items) and then on button Click all the selected items display in listView of my CartActivity.

(Actully, i am working on Shopping Cart type activity)

Problem

i am using ArrayList(myCartList) and in onListItemClickListener method i am adding the clicked item to ArrayList(myCartList) like : myCartList.add(getItem(position));

After this on button click this array will be passed to CartActivity and display in ListView there...

Code is below

import android.app.ProgressDialog;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class grabedDb extends AppCompatActivity {
EditText grabResults;
Button cart;
String url = "http://MY_LINK_HERE";
ArrayList<HashMap<String, String>> Item_List;
ProgressDialog PD;
SimpleAdapter adapter;
ArrayList stock_list;


// JSON Node names
public static final String ITEM_ID = "name";
public static final String ITEM_NAME = "rate";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_grabed_db);
    grabResults = (EditText) findViewById(R.id.grabed_et_search);
    cart = (Button) findViewById(R.id.grabed_btn_showCart);
     grabResults.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            //perform Search
                grabedDb.this.adapter.getFilter().filter(s);
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

    Item_List = new ArrayList<HashMap<String, String>>();

    PD = new ProgressDialog(this);
    PD.setMessage("Please Wait...");
    PD.setCancelable(false);

    ReadDataFromDB();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.activity_main_actions, menu);
    return super.onCreateOptionsMenu(menu);
}
private void ReadDataFromDB() {
    PD.show();
    JsonObjectRequest jreq = new JsonObjectRequest(Request.Method.GET, url,
            new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    try {
                        int success = response.getInt("success");

                        if (success == 1) {
                            JSONArray ja = response.getJSONArray("mydrugs");

                            for (int i = 0; i < ja.length(); i++) {

                                JSONObject jobj = ja.getJSONObject(i);
                                HashMap<String, String> item = new HashMap<String, String>();
                                item.put(ITEM_ID, jobj.getString(ITEM_ID));
                                item.put(ITEM_NAME,
                                        jobj.getString(ITEM_NAME));

                                Item_List.add(item);

                            } // for loop ends

                            String[] from = { ITEM_ID, ITEM_NAME };
                            int[] to = { R.id.item_name, R.id.item_id };

                            adapter = new SimpleAdapter(
                                    getApplicationContext(), Item_List,
                                    R.layout.list_items, from, to);
                            ListView myList = (ListView) findViewById(R.id.list_list_listView);
                            myList.setAdapter(adapter);
                            PD.dismiss();
                            myList.setOnItemClickListener(new AdapterView.OnItemClickListener(){
                                @Override
                                public void onItemClick(AdapterView<?> parent, View view, int position,
                                                        long id) {
                                    stock_list.add(Item_List.get(position));
                                    Toast.makeText(getApplicationContext() , "Added To Cart " + Item_List.get(position), Toast.LENGTH_LONG ).show();
                                    cart.setVisibility(View.VISIBLE);
                                    cart.setOnClickListener(new View.OnClickListener() {
                                        @Override
                                        public void onClick(View v) {
                                            Intent modify_intent = new Intent(grabedDb.this,
                                                    updatedata.class);
                                            modify_intent.putStringArrayListExtra("stock_list", stock_list);

                                            startActivity(modify_intent);
                                        }
                                    });



                                }
                            });
                        } // if ends
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }
            }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            PD.dismiss();
        }
    });

    // Adding request to request queue
    MyApplication.getInstance().addToReqQueue(jreq);

}
}
Moiz Ahmad
  • 144
  • 10

2 Answers2

0

Make your item Parcelable. Then pass the whole array as a Parcelable in the intent via setExtra(), and retrieve it with getExtra().

lionscribe
  • 3,413
  • 1
  • 16
  • 21
  • thanks for your contribution ... will you please show me code for it... how it will work... see my code above and make some suggestions ...thanks dear... – Moiz Ahmad Aug 02 '16 at 06:06
  • See http://stackoverflow.com/questions/2139134/how-to-send-an-object-from-one-android-activity-to-another-using-intents – lionscribe Aug 02 '16 at 06:08
  • dear... there is too much complex code and also issues pointed in comments... please give me demo according to my code given above... thanks in advance ...please a request to give me sm sample code for my issue... – Moiz Ahmad Aug 02 '16 at 06:14
  • No easy shortcut. I have another idea, if you want to save the shopping card even if user exits app, then you can save the cart to saved preferences, and in new Activity read from preferences. – lionscribe Aug 02 '16 at 06:21
0

Hello replace your code

myList.setOnItemClickListener(new AdapterView.OnItemClickListener(){
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
    long id) {
        stock_list.add(Item_List.get(position));
        Toast.makeText(getApplicationContext() , "Added To Cart " + Item_List.get(position), Toast.LENGTH_LONG ).show();
        cart.setVisibility(View.VISIBLE);
        cart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent modify_intent = new Intent(grabedDb.this,
                        updatedata.class);
                modify_intent.putStringArrayListExtra("stock_list", stock_list);

                startActivity(modify_intent);
            }
        });
    }
});

with this,

myList.setOnItemClickListener(new AdapterView.OnItemClickListener(){
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
    long id) {
        stock_list.add(Item_List.get(position));
        Toast.makeText(getApplicationContext() , "Added To Cart " + Item_List.get(position), Toast.LENGTH_LONG ).show();
        cart.setVisibility(View.VISIBLE);
    }
});

cart.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent modify_intent = new Intent(grabedDb.this,
                updatedata.class);
        modify_intent.putStringArrayListExtra("stock_list", stock_list);

        startActivity(modify_intent);
    }
});

Hope it will work..!!

Mitesh Vanaliya
  • 2,491
  • 24
  • 39