-1
// JSON Node names
private static final String TAG_CONTACTS = "contacts";
private static final String TAG_ID = "id";
private static final String TAG_NAME = "name";
private static final String TAG_EMAIL = "email";
private static final String TAG_ADDRESS = "address";
private static final String TAG_GENDER = "gender";
private static final String TAG_PHONE = "phone";
private static final String TAG_PHONE_MOBILE = "mobile";
private static final String TAG_PHONE_HOME = "home";
private static final String TAG_PHONE_OFFICE = "office";

// contacts JSONArray
JSONArray contacts = null;

// Hashmap for ListView
ArrayList<HashMap<String, String>> contactList;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.search_list);

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

    ListView lv = getListView();

    // Listview on item click listener
    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {
            // getting values from selected ListItem
            int itemPosition     = position;

            String name = ((TextView) view.findViewById(R.id.name))
                    .getText().toString();
            String cost = ((TextView) view.findViewById(R.id.email))
                   .getText().toString();
           // String add = ((TextView) view.findViewById(R.id.address))
             //       .getText().toString();
            String  description = ((TextView) view.findViewById(R.id.mobile))
                   .getText().toString();
            String  price =((TextView) view.findViewById(R.id.price)).getText().toString();
            String amount=((TextView) view.findViewById(R.id.mobile_labels)).getText().toString();


            //String sweet = ((TextView) view.findViewById(R.id.home))
               //     .getText().toString();


            // Starting single contact activity
            Intent in = new Intent(SearchActivity.this,
                    SingleContactActivity.class);
           in.putExtra(TAG_NAME, name);
           in.putExtra(TAG_EMAIL, cost);
            //in.putExtra(TAG_PHONE_MOBILE,description);
            //in.putExtra(TAG_PHONE_HOME,price);
           // in.putExtra(TAG_PHONE_OFFICE,amount);
            //in.putExtra(TAG_ADDRESS,add);
            //in.putExtra(TAG_PHONE_MOBILE, description);
           // in.putExtra(TAG_PHONE_HOME,sweet);
            startActivity(in);

        }
    });

    // Calling async task to get json
    new GetContacts().execute();
}

/**
 * Async task class to get json by making HTTP call
 * */
private class GetContacts extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        // Showing progress dialog
        pDialog = new ProgressDialog(SearchActivity.this);
        pDialog.setMessage("Please wait...");
        pDialog.setCancelable(false);
        pDialog.show();

    }

    @Override
    protected Void doInBackground(Void... arg0) {
        // Creating service handler class instance
        ServiceHandler sh = new ServiceHandler();

        // Making a request to url and getting response
        String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);

        Log.d("Response: ", "> " + jsonStr);

        if (jsonStr != null) {
            try {
                JSONObject jsonObj = new JSONObject(jsonStr);

                // Getting JSON Array node
                contacts = jsonObj.getJSONArray(TAG_CONTACTS);

                // looping through All Contacts
                for (int i = 0; i < contacts.length(); i++) {
                    JSONObject c = contacts.getJSONObject(i);

                    String id = c.getString(TAG_ID);
                    String name = c.getString(TAG_NAME);
                    String email = c.getString(TAG_EMAIL);

                 //   String add = c.getString(TAG_ADDRESS);
                    String gender = c.getString(TAG_GENDER);

                    // Phone node is JSON Object
                    JSONObject phone = c.getJSONObject(TAG_PHONE);
                    String mobile = phone.getString(TAG_PHONE_MOBILE);
                   String home = phone.getString(TAG_PHONE_HOME);
                    String office = phone.getString(TAG_PHONE_OFFICE);

                    // tmp hashmap for single contact
                    HashMap<String, String> contact = new HashMap<String, String>();

                    // adding each child node to HashMap key => value
                    contact.put(TAG_ID, id);
                    contact.put(TAG_NAME, name);
                  contact.put(TAG_EMAIL, email);
                   // contact.put(TAG_ADDRESS,add);
                    contact.put(TAG_PHONE_MOBILE, mobile);
                    contact.put(TAG_PHONE_HOME,home);
                    contact.put(TAG_PHONE_OFFICE,office);

                    // adding contact to contact list
                    contactList.add(contact);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        } else {
            Log.e("ServiceHandler", "Couldn't get any data from the url");
        }

        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        // Dismiss the progress dialog
        if (pDialog.isShowing())
            pDialog.dismiss();
        /**
         * Updating parsed JSON data into ListView
         * */
        ListAdapter adapter = new SimpleAdapter(
                SearchActivity.this, contactList,
                R.layout.list_item, new String[] { TAG_NAME, TAG_EMAIL,
                TAG_PHONE_MOBILE ,TAG_PHONE_HOME,TAG_PHONE_OFFICE }, new int[] { R.id.name,
                R.id.email, R.id.mobile,R.id.price ,R.id.mobile_labels});

        setListAdapter(adapter);
    }

}

}

Here is the list. In this I am getting name,email and mobile number. In the list when I select a name in the list open a new activity in that activity I need name, email, phone, address, gender, office. How should I pass this in next activity.

Here is the next activity code.

   private static final String TAG_NAME = "name";
   private static final String TAG_EMAIL = "email";
   private static final String TAG_PHONE_MOBILE = "mobile";

private static final String TAG_PHONE_HOME = "home";
private static final String TAG_PHONE_OFFICE = "office";
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_single_contact);

    // getting intent data
    Intent in = getIntent();

    // Get JSON values from previous intent
    String name = in.getStringExtra(TAG_NAME);
    String email = in.getStringExtra(TAG_EMAIL);
    String mobile = in.getStringExtra(TAG_PHONE_MOBILE);
    String home = in.getStringExtra(TAG_PHONE_HOME);
    String office= in.getStringExtra(TAG_PHONE_OFFICE);


    // Displaying all values on the screen
    TextView lblName = (TextView) findViewById(R.id.name_label);
    TextView lblEmail = (TextView) findViewById(R.id.email_label);
    TextView lblMobile = (TextView) findViewById(R.id.mobile_label);
    TextView lblMobiles = (TextView) findViewById(R.id.mobile_labels);
    TextView lblOffice = (TextView) findViewById(R.id.mobile_office);

    lblName.setText(name);
    lblEmail.setText(email);
    lblMobile.setText(mobile);
    lblMobiles.setText(home);
    lblOffice.setText(office);
}
}

It's better if I have only a name in the listview. On selecting the name in the list further details should be displayed, for instance: name, phone, email, address, gender.

PiotrWolkowski
  • 8,408
  • 6
  • 48
  • 68
user000
  • 29
  • 2
  • 7
  • What is your problem now?Your code seems correct – Jas Jan 27 '16 at 12:10
  • @jasmy problem is in the listview i need only name by selecting name in the list view open another activity and display the name, address,phone,mobile, gender,home,office – user000 Jan 27 '16 at 12:15
  • You have already done that in your code na? – Jas Jan 27 '16 at 12:18
  • i need only names alone in the list view by selecting the names in the list view and open another activity and display the details of selected name for eg.in the lsit view i want names eg, test by selecting the test open another activity and display the details of test like name:test, address,phone,mobile,email etc – user000 Jan 27 '16 at 12:39
  • does any one suggest me a solution for this – user000 Jan 27 '16 at 12:49
  • Simply pass them through Intent and retreive in second activity – Jas Jan 27 '16 at 12:49
  • I couldn't figure out your problem now. Is there any error in what you've tried? – Jas Jan 27 '16 at 12:50
  • @jas can u give me sample of how to pass them in intent it and show it in another activity. – user000 Jan 27 '16 at 12:51
  • there is no error but the listview i am using is from databse (json) here is the json link:http://api.androidhive.info/contacts/ – user000 Jan 27 '16 at 12:52
  • Oh man!! that's exactly what you have done in your code. Are you simply copy -pasting code without knowing what you are doing? – Jas Jan 27 '16 at 12:56
  • See this http://stackoverflow.com/a/5265952/4494555 – Jas Jan 27 '16 at 12:57
  • no not yet it's an sample excercise i am testing. i am enterialing using my different code for some reference i need like this – user000 Jan 27 '16 at 12:58

1 Answers1

0

Pass them through the intent you used to start the new activity. When you generate the intent you can bundle some information and pass it as an extra. Then all the information should be in the bundle when your new activity starts. That's probably the easiest way.

There's lots of information in those links, and google has tutorials on how to use intents as well.

Hope that helps!