it-swarm.com.de

Verwenden Sie die Objekt-Array-Liste als Spinner-Adapter

Ich habe diese ArrayList von Objekten erhalten und muss sie wie folgt als Adapter für meinen Spinner festlegen:

ArrayList<Contact> contactlist= new ArrayList<Contact>();
contactlist.add("Gabe");
contactlist.add("Mark");
contactlist.add("Bill");
contactlist.add("Steve");

ArrayAdapter adapter = new ArrayAdapter(this, Android.R.layout.simple_spinner_item, contactlist);
    adapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);

contactsSpinner.setAdapter(adapter);

Dies ist ein Beispiel für mein Kontaktobjekt. Es enthält nur zwei Variablen, Name und ID

Contact contact = new Contact();
    contact.setName("Gabe")
    contact.setID("14575")

Ich muss den Spinner veranlassen, den Namen des Kontakts aus der ArrayList anzuzeigen, da er die Kontaktadresse im Speicher anzeigt. Wenn diese Option ausgewählt ist, muss ich die Kontakt-ID zurückgeben, um einen anderen Vorgang auszuführen. Wie kann ich das machen?

19
Rafael

Hallo, was Sie tun müssen, ist ziemlich einfach: Überschreiben Sie in Ihrer Klasse Contact die Methode toString () und geben Sie den Namen des Kontakts zurück.

schau dir das Beispiel an. es ist auch in github verfügbar

public class SpinnerTestOneActivity extends AppCompatActivity {

    private Spinner spinner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_spinner_test_one);
        Toolbar toolbar = (Toolbar) findViewById(R.id.my_custom_toolbar);
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        initializeUI();
    }

    private void initializeUI() {

        spinner = (Spinner) findViewById(R.id.SpinnerTestOneActivity_spinner);

        ArrayList<Contact> contacts = new ArrayList<>();

        for (int i = 0; i < 10; i++) {
            contacts.add(new Contact("Name_" + i, "Id_" + i));
        }

        ArrayAdapter<Contact> adapter =
                new ArrayAdapter<Contact>(getApplicationContext(),  Android.R.layout.simple_spinner_dropdown_item, contacts);
        adapter.setDropDownViewResource( Android.R.layout.simple_spinner_dropdown_item);

        spinner.setAdapter(adapter);

    }

    private class Contact {
        private String contact_name;
        private String contact_id;

        public Contact() {
        }

        public Contact(String contact_name, String contact_id) {
            this.contact_name = contact_name;
            this.contact_id = contact_id;
        }

        public String getContact_name() {
            return contact_name;
        }

        public void setContact_name(String contact_name) {
            this.contact_name = contact_name;
        }

        public String getContact_id() {
            return contact_id;
        }

        public void setContact_id(String contact_id) {
            this.contact_id = contact_id;
        }

        /**
         * Pay attention here, you have to override the toString method as the
         * ArrayAdapter will reads the toString of the given object for the name
         *
         * @return contact_name
         */
        @Override
        public String toString() {
            return contact_name;
        }
    }

}

ausgabe

contact_image

69
Pankaj Nimgade