Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Set Key and Value in spinner

I have a spiner and I want set a key and a value on this,I use of HashMap,It's work,but show one row,like this:

enter image description here

Code:

        final View rootView = inflater.inflate(R.layout.fragment_photos, container, false);      Spinner spin=(Spinner)rootView.findViewById(R.id.spinner1);      HashMap<Integer, String> P_Hash=new HashMap<Integer, String>();      Update Get_Information=new Update(rootView.getContext());      ArrayList<String> Province_NAME=new ArrayList<String>();     Province_NAME=Get_Information.GET_Province();      ArrayList<Integer> Province_ID=new ArrayList<Integer>();     Province_ID=Get_Information.Get_Province_ID();      for (int i = 0; i < Province_ID.size(); i++)     {         P_Hash.put(Province_ID.get(i), Province_NAME.get(i));         Log.d("Province_ID.get(i)", Province_ID.get(i)+"");         Log.d(" Province_NAME.get(i)",  Province_NAME.get(i)+"");     }       ArrayAdapter<HashMap<Integer, String>> adapter = new ArrayAdapter<HashMap<Integer,String>>(rootView.getContext(), android.R.layout.simple_spinner_item);     adapter.add(P_Hash);     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);      spin.setAdapter(adapter); 
like image 213
Nima.S-H Avatar asked Jul 12 '14 11:07

Nima.S-H


People also ask

What is a spinner set?

Spinners provide a quick way to select one value from a set. In the default state, a spinner shows its currently selected value. Touching the spinner displays a dropdown menu with all other available values, from which the user can select a new one. You can add a spinner to your layout with the Spinner object.


2 Answers

Better approach to populate spinner with key and value should be:

Step 1: Create POJO class which will take care of key and value

public class Country {      private String id;     private String name;          public Country(String id, String name) {         this.id = id;         this.name = name;     }       public String getId() {         return id;     }      public void setId(String id) {         this.id = id;     }      public String getName() {         return name;     }      public void setName(String name) {         this.name = name;     }       //to display object as a string in spinner     @Override     public String toString() {         return name;     }      @Override     public boolean equals(Object obj) {         if(obj instanceof Country){             Country c = (Country )obj;             if(c.getName().equals(name) && c.getId()==id ) return true;         }          return false;     }  } 



Note: toString() method is important as it is responsible for displaying the data in spinner, you can modify toString() as per your need

Step 2: Prepare data to be loaded in spinner

 private void setData() {          ArrayList<Country> countryList = new ArrayList<>();         //Add countries          countryList.add(new Country("1", "India"));         countryList.add(new Country("2", "USA"));         countryList.add(new Country("3", "China"));         countryList.add(new Country("4", "UK"));          //fill data in spinner          ArrayAdapter<Country> adapter = new ArrayAdapter<Country>(context, android.R.layout.simple_spinner_dropdown_item, countryList);         spinner_country.setAdapter(adapter);         spinner_country.setSelection(adapter.getPosition(myItem));//Optional to set the selected item.         } 

Step 3: and finally get selected item's key and value in onitemselected listener method of spinner

spinner_country.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {             @Override             public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {                   Country country = (Country) parent.getSelectedItem();                  Toast.makeText(context, "Country ID: "+country.getId()+",  Country Name : "+country.getName(), Toast.LENGTH_SHORT).show();                 }              @Override             public void onNothingSelected(AdapterView<?> parent) {                 }         }); 
like image 50
Srinivas Guni Avatar answered Oct 14 '22 08:10

Srinivas Guni


Try to use HashMap to store Key-Value pair data and in your case spinner item index as key and Province_ID as value. Check below example for more details.

Prepare value for spinner

String[] spinnerArray = new String[Province_ID.size()]; HashMap<Integer,String> spinnerMap = new HashMap<Integer, String>(); for (int i = 0; i < Province_ID.size(); i++) {    spinnerMap.put(i,Province_ID.get(i));    spinnerArray[i] = Province_NAME.get(i); } 

Set value to spinner

ArrayAdapter<String> adapter =new ArrayAdapter<String>(context,android.R.layout.simple_spinner_item, spinnerArray); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); 

Get value to spinner

String name = spinner.getSelectedItem().toString(); String id = spinnerMap.get(spinner.getSelectedItemPosition()); 
like image 22
Haresh Chhelana Avatar answered Oct 14 '22 07:10

Haresh Chhelana