user3388240
user3388240

Reputation: 27

To get Id of selected item in spinner android

Here, It is my java file

public class Create_Event extends SherlockFragment 
implements OnClickListener {

    class Organizer extends AsyncTask<Void, Void, Object> {

        private ProgressDialog pdia;

        protected void onPreExecute() {
            super.onPreExecute();
            pdia = new ProgressDialog(getActivity());
            pdia.setMessage("Loading...");
            pdia.show();
        }

        @Override
        protected Object doInBackground(Void... params) {

            try {
                HttpClient httpclient1 = new DefaultHttpClient();
                HttpPost httppost1 = new HttpPost(Constants.BASE_URL
                        + "mobile_logins/all_my_event");
                List<NameValuePair> nameValuePairs1 = new ArrayList<NameValuePair>(1);
                nameValuePairs1.add(new BasicNameValuePair("id", Constants.id));
                httppost1.setEntity(new UrlEncodedFormEntity(nameValuePairs1));
                HttpResponse response1 = httpclient1.execute(httppost1);
                String _response1 = EntityUtils.toString(response1.getEntity());
                Log.e("test", _response1); 
                jsobj1 = new JSONObject(_response1);
                orr = jsobj1.getJSONArray("organizers");
                String orggg = orr.toString();
                Log.e("Organization", orggg);
                return jsobj1;

            } catch (Exception e) {
                e.printStackTrace();
                Log.e("Fail 1", e.toString());
                return e;
            }
        }

        protected void onPostExecute(Object jsobj) {
            pdia.dismiss();

            String post = jsobj.toString();
            Log.e("event_rese", post);
            int len = orr.length();

            Log.e("json_posexe", orr.toString());
            Log.e("Onpostexe_arrlength", String.valueOf(len));

            try {
                JSONArray JA = orr;
                JSONObject json1 = null;
                final String[] host1 = new String[orr.length()]; 
                final String[] host_id=new String[orr.length()];

                for(int i = 0; i < len; i++) {
                    json1 = JA.getJSONObject(i);
                    host1[i] = json1.getString("name");
                    host_id[i] = json1.getString("id");
                }

                List<String> list = new ArrayList<String>();
                for(int i = 0; i < host1.length; i++) {
                    list.add(host1[i]);
                }
                Log.e("onpostexe_list",list.toString());

                ArrayAdapter<String> adapter = 
                        new ArrayAdapter<String>(getActivity().getApplicationContext(),
                                 android.R.layout.simple_spinner_item,list);
                adapter.setDropDownViewResource(
                        android.R.layout.simple_spinner_dropdown_item);
                sp.setAdapter(adapter);
                sp.setOnItemSelectedListener(new OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> arg0, View arg1,
                            int position, long id) {
                        organization=sp.getSelectedItem().toString();
                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> arg0) {
                        // TODO Auto-generated method stub
                    }
                });


            } catch(Exception e) {
                Log.e("Fail 3", e.toString());
            }


            if (json instanceof JSONObject) {
                asyncrun = true;
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {

                } else {
                    ExecptionHandler.register(getActivity(), (Exception) jsobj);
                }
            }

        }

    }
}

Here, I need id of the selected organization from spinner. The id and organization name came from Jsonobject(here jsobj1). How to get id of selected item from jsonobject? Is it possible?? Please Help...

Upvotes: 0

Views: 3463

Answers (3)

Mr. Mak
Mr. Mak

Reputation: 867

Create a Organization bean as below with method @Override toString()

public class Organization {

    private Integer orgId; // Long etc.

    private String orgName;

    // more properties if you need


    @Override  // Mandatory
    public String toString() {
        return orgName; // Return anything, what you want to show in spinner
    }

    // Getter & Setter
}

Then Create a java.util.List<Organization> organizationList; from your API response JSONArray or any other way. And make and set ArrayAdapter<Organization> to load Spinner options.

List<Organization> organizationList = ... // init using JSON Data OR any how;

ArrayAdapter<Organization> orgAdapter = new ArrayAdapter<Organization>(this, android.R.layout.simple_spinner_item, organizationList);
orgAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

Spinner mySpinner = findViewById(R.id.orgSpinner);
mySpinner.setAdapter(orgAdapter);

Now get selected Organization and its Properties in any Click/Change Event like below

// In any OnClick / OnSelect event
Organization selectedOrganization = (Organization) mySpinner.getSelectedItem();
Integer orgId = selectedOrganization.getOrgId();
String orgName = selectedOrganization.getOrgName();
// and if you have more properties

Upvotes: 2

Hariharan
Hariharan

Reputation: 24853

Yes,it is Possible, try like below.

HashMap<String,String> map_values = new HashMap<String,String>();
for(int i = 0; i < len; i++) {
      json1 = JA.getJSONObject(i);
      host1[i] = json1.getString("name");
      host_id[i] = json1.getString("id");
      map_values.put(host1[i],host_id[i]);
}

and spinner

  sp.setOnItemSelectedListener(new OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> arg0, View arg1,
                        int position, long id) {
                    String value = sp.getSelectedItem().toString();
                    String id = map_values.get(value);

                    Log.v("id",""+id);
                }

                @Override
                public void onNothingSelected(AdapterView<?> arg0) {
                    // TODO Auto-generated method stub
                }
            });

Upvotes: 1

Toochka
Toochka

Reputation: 904

mSpinner.getSelectedItemId(); // here is your selected item's Id.

BTW google first, ask later :)

Upvotes: 0

Related Questions