web-dev-qa-db-fra.com

Définir la clé et la valeur dans le fileur

J'ai un spiner et je veux définir une clé et une valeur sur ceci, j'utilise HashMap, c'est du travail, mais montre une ligne, comme ceci:

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);
42
Nima.S-H

Essayez d'utiliser HashMap pour stocker Key-Value données de paire et dans votre cas index d'élément spinner en tant que clé et ID de province en tant que valeur. Consultez l'exemple ci-dessous pour plus de détails.

Préparer la valeur pour le fileur

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);
}

Définissez la valeur sur 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);

Récupère la valeur de spinner

String name = spinner.getSelectedItem().toString();
String id = spinnerMap.get(spinner.getSelectedItemPosition());
83
Haresh Chhelana

ne meilleure approche pour remplir spinner avec la clé et la valeur devrait être:

Step 1: Créez la classe POJO qui s'occupera de la clé et de la valeur

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;
    }

}



Remarque: La méthode toString () est importante car elle est responsable de l'affichage des données dans spinner, vous pouvez modifier toString () selon vos besoins.

Étape 2: Préparer les données à charger dans la roulette

 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.    
    }


Étape 3: et enfin obtenir la clé et la valeur de l'élément sélectionné dans la méthode d'écoute par élément sélectionné

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) {    
            }
        });


Bonne chance, codage heureux!

135
Srinivas Guni