Skip to content Skip to sidebar Skip to footer

How Can Get Selected Item Id Value In Dynamic Spinner In Android

I create dynamic spinner in android which show json data from url I set data properly in spinner but i get id of selected item How can i do this My code for set spinner value is

Solution 1:

Create a MyModel like this

publicclassMyModel
{
    String cartype_id,type,rate_type,rate_in;

    publicStringgetCartype_id() {
        return cartype_id;
    }

    publicvoidsetCartype_id(String cartype_id) {
        this.cartype_id = cartype_id;
    }

    publicStringgetType() {
        returntype;
    }

    publicvoidsetType(Stringtype) {
        this.type = type;
    }

    publicStringgetRate_type() {
        return rate_type;
    }

    publicvoidsetRate_type(String rate_type) {
        this.rate_type = rate_type;
    }

    publicStringgetRate_in() {
        return rate_in;
    }

    publicvoidsetRate_in(String rate_in) {
        this.rate_in = rate_in;
    }
}

Than create a ArrayList of your Model Class

ArrayList<MyModel> arrayList = new ArrayList<>();

Parse your json like this

try {
        JSONArray jsonArray =
                response.getJSONArray("car_rate");

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


            JSONObject obj = jsonArray.getJSONObject(i);

            MyModel myModel= newMyModel();
            myModel.setCartype_id(obj.getString("cartype_id"));
            myModel.setType(obj.getString("type"));
            myModel.setRate_in(obj.getString("rate_type"));
            myModel.setRate_in(obj.getString("rate_in"));


            arrayList.add(myModel);

        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

Now create a custom adapter like this

classSpinnerAdapterextendsArrayAdapter<MyModel> {

    private ArrayList<MyModel> myarrayList;

    SpinnerAdapter(Context context, int textViewResourceId, ArrayList<MyModel> modelArrayList) {
        super(context, textViewResourceId, modelArrayList);
        this.myarrayList = modelArrayList;
    }

    @Overridepublic View getDropDownView(int position, View convertView, @NonNull ViewGroup parent) {
        return getCustomView(position, parent);
    }

    @Nullable@Overridepublic MyModel getItem(int position) {
        return myarrayList.get(position);
    }

    @OverridepublicintgetCount() {
        intcount= myarrayList.size();
        //return count > 0 ? count - 1 : count;return count;
    }

    @NonNull@Overridepublic View getView(int position, View convertView, @NonNull ViewGroup parent) {
        return getCustomView(position, parent);
    }

    private View getCustomView(int position, ViewGroup parent) {
        MyModelmodel= getItem(position);

        ViewspinnerRow= LayoutInflater.from(parent.getContext()).inflate(android.R.layout.simple_spinner_dropdown_item, parent, false);

        TextViewlabel= spinnerRow.findViewById(android.R.id.text1);
        label.setText(String.format("%s", model != null ? model.getType() : ""));

        return spinnerRow;
    }
}

Now set adapter in your spinner like this

SpinnerAdapteradapter=newSpinnerAdapter(MainActivity.this, android.R.layout.simple_spinner_dropdown_item, arrayList);
        mySpinner.setAdapter(adapter);

Now get selected item form your spinner like this

    mySpinner.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener() {
        @OverridepublicvoidonItemSelected(AdapterView<?> parent, View view, int position, long id) {

            MyModel myModel=(MyModel) parent.getSelectedItem();
            Log.e("DATA",myModel.getCartype_id());
            Log.e("DATA",myModel.getRate_in());
            Log.e("DATA",myModel.getRate_type());
            Log.e("DATA",myModel.getType());
        }

        @OverridepublicvoidonNothingSelected(AdapterView<?> parent) {

        }
    });

SAMPLE CODE

protectedvoidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);    

        try {
            JSONArray jsonArray =
                    response.getJSONArray("car_rate");

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


                JSONObject obj = jsonArray.getJSONObject(i);

                MyModel myModel= newMyModel();
                myModel.setCartype_id(obj.getString("cartype_id"));
                myModel.setType(obj.getString("type"));
                myModel.setRate_in(obj.getString("rate_type"));
                myModel.setRate_in(obj.getString("rate_in"));


                arrayList.add(myModel);

            }

            SpinnerAdapter adapter = newSpinnerAdapter(MainActivity.this, android.R.layout.simple_spinner_dropdown_item, arrayList);
            mySpinner.setAdapter(adapter);

        } catch (JSONException e) {
            e.printStackTrace();
        }

        mySpinner.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener() {
            @OverridepublicvoidonItemSelected(AdapterView<?> parent, View view, int position, long id) {

                MyModel myModel=(MyModel) parent.getSelectedItem();
                Log.e("DATA",myModel.getCartype_id());
                Log.e("DATA",myModel.getRate_in());
                Log.e("DATA",myModel.getRate_type());
                Log.e("DATA",myModel.getType());
            }

            @OverridepublicvoidonNothingSelected(AdapterView<?> parent) {

            }
        });


    }

Post a Comment for "How Can Get Selected Item Id Value In Dynamic Spinner In Android"