2016-01-14 21 views
8

ho ottenuto questo ArrayList di oggetti, e ho bisogno di impostarlo come adattatore di mio filatore così:Usa elenco di oggetti array come adattatore filatore

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

Questo è un esempio di mio oggetto di contatto, si hanno solo due variabili, nome e ID

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

ho bisogno di fare lo spettacolo filatore il nome del contatto dalla ArrayList perché è mostrando l'indirizzo di contatto nella memoria, e quando selezionato, ho bisogno di restituire l'ID di contatto, a eseguire un'altra operazione. Come posso fare questo?

+0

Non è chiaro per me che cosa la vostra domanda è esattamente, o anche quante domande si sta chiedendo. Puoi spiegare cosa sta facendo il codice che non è corretto, o esattamente cosa ti serve per farlo che non sta facendo? – nasch

+0

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

risposta

32

Ciao quello che devi fare è abbastanza semplice, per la tua classe Contatto, sovrascrivi il metodo toString() e restituisci il nome del contatto.

guardare l'esempio. è disponibile anche 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; 
     } 
    } 

} 

uscita

contact_image

+1

Serbatoio molto! +1 per la fantastica risposta. – Rafael

+0

prego, sono contento di poterti aiutare :) ....... verifica il codice su github https://github.com/pankajnimgade/Tutorial/blob/master/app/src/main/java/ spinner/list/activities/SpinnerTestOneActivity.java –

+0

Salve il codice sopra funziona perfettamente. come ottenere l'elemento selezionato dallo spinner. –

Problemi correlati