2016-01-14 12 views
8

bekam ich diese Arraylist mit Objekten, und ich brauche es als meine Spinner des Adapters wie folgt festgelegt:Verwenden Objektarray-Liste als Spinner Adapter

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 meiner Kontaktobjekt ist, es nur zwei haben Variablen, Name und ID

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

ich brauche die Spinner zeigen den Namen des Kontakts aus der Arraylist zu machen, weil sie in dem Speicher die Kontaktadresse ist zeigt, und wenn sie ausgewählt wird, muss ich den Kontakt ID zurückzukehren, zu Führen Sie eine andere Operation aus. Wie kann ich das tun?

+0

Es ist mir nicht klar, verfügbar, was Ihre Frage genau ist, oder auch, wie viele Fragen Sie fragen. Kannst du erklären, was der Code tut, ist das falsch oder genau das, was du tun musst, was er nicht tut? – nasch

+0

https://stackoverflow.com/questions/29077135/populate-spinner-with-custom-object/45222776?noredirect=1#comment77412955_45222776 –

Antwort

32

Hallo, was Sie tun müssen, ist ziemlich einfach, zu Ihrer Klasse Kontakt, überschreiben Sie die toString() Methode darin und geben Sie den Namen des Kontakts.

Schauen Sie sich das Beispiel an. es ist auch in github

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(), R.layout.simple_spinner_dropdown_item, contacts); 
     adapter.setDropDownViewResource(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; 
     } 
    } 

} 

Ausgang

contact_image

+1

Tank dich sehr! +1 für die tolle Antwort. – Rafael

+0

Sie sind willkommen, ich bin froh, dass ich helfen konnte :) ....... Überprüfen Sie den Code auf GitHub https://github.com/pankajnimgade/Tutorial/blob/master/app/src/main/java/ Spinner/list/activities/SpinnerTestOneActivity.java –

+0

Hallo, der obige Code funktioniert gut.Hier erhalten Sie ausgewählte Artikel aus dem Spinner. –