Sachin Varma
Sachin Varma

Reputation: 2235

Dynamic Spinners item selection error

I' am creating and populating spinners dynamically,the problem is while selecting the items(eg:4th) of any spinner ,i'am getting the id of the last spinners which is created dynamically item(4th id). I want to get the corresponding id's which i was set dynamically to the spinner items.

How to get the values of each spinner correctly..

Codes are give below.

public void secondarray(JsonParser jsonParser) {
    String fieldName;
    ameList = new ArrayList<AmeModel>();
    AmeModel ameModel = null;

    try {
        while (jsonParser.nextToken() != JsonToken.END_ARRAY) {
            ameModel = new AmeModel();
            while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
                fieldName = jsonParser.getCurrentName();
                if ("valueid".equals(fieldName)) {
                    jsonParser.nextToken();
                    ameModel.setId((jsonParser.getText()));

                } else if ("valuename".equals(fieldName)) {
                    jsonParser.nextToken();
                    ameModel.setName((jsonParser.getText()));


                } else {
                    jsonParser.skipChildren();
                }
            }
            ameList.add(ameModel);
        }


        Spinner sp=new Spinner(MainActivity.this);

        AmeAdapter adapter = new AmeAdapter(this, ameList);

        sp.setAdapter(adapter);
        sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

                Toast.makeText(MainActivity.this, ameList.get(i).getId(), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });

        container.addView(sp);

        //setContentView(linearlayout);

    } catch (JsonParseException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }

}

Any help will be appreciated thank you.

Upvotes: 0

Views: 91

Answers (1)

Nitin Karande
Nitin Karande

Reputation: 1325

For get selected item Name:

String itemName=sp.getSelectedItem().toString(); // sp is your spinner

For get selected item position :

 int position = sp.getSelectedItemPosition();

Now as per your code snippiest If you want to get Id Those you have set dynamically.

   HashMap<String, String> nameId;
   String itemId;
   String itemName= String.valueOf(sp.getSelectedItem());

   for (String s : nameId.keySet()) {

            if (nameId.get(s).equals(itemName)) {

                itemId= s;

            }

Try to use above suggestion

Upvotes: 1

Related Questions