it-swarm.com.de

Stellen Sie Schlüssel und Wert im Drehfeld ein

Ich habe einen Spiner und möchte einen Schlüssel und einen Wert dafür setzen. Ich verwende HashMap. Es funktioniert, aber zeige eine Zeile, wie folgt:

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

Versuchen Sie HashMap zu verwenden, um Schlüssel-Wert Paardaten zu speichern, und in Ihrem Fall Spinner-Item-Index als Schlüssel und Province_ID als Wert. Überprüfen Sie das folgende Beispiel für weitere Details.

Wert für Spinner vorbereiten

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

Wert auf Spinner setzen

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

Wert für Spinner ermitteln

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

Besserer Ansatz, um Spinner mit Schlüssel und Wert zu füllen, sollte sein:

Schritt 1 : Erstellen Sie eine POJO-Klasse, die sich um Schlüssel und Wert kümmert

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

}



Hinweis: Die toString () -Methode ist wichtig, da sie für die Anzeige der Daten in Spinner verantwortlich ist. Sie können toString () gemäß ändern deine Bedürfnisse

Schritt 2 : Bereiten Sie die Daten vor, die in den Spinner geladen werden sollen

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


Schritt 3: und schließlich den Schlüssel und Wert des ausgewählten Elements in einer ausgewählten Listener-Methode des Drehfelds abrufen

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


Alles Gute, Happy Coding!

135
Srinivas Guni