2016-10-01 1 views
2

Hallo, ich habe folgendes Objekt:Sets Ausgewählte Artikel von Spinner

public class busObj { 

    private int id; 
    private String registrationNo; 
    private String model; 
    private String driver; 
    private String contact; 

    public busObj() { } 

    public busObj(int id, String registrationNo, String model, String driver, String contact) { 
     this.id = id; 
     this.registrationNo = registrationNo; 
     this.model = model; 
     this.driver = driver; 
     this.contact = contact; 
    } 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getRegistrationNo() { 
     return registrationNo; 
    } 

    public void setRegistrationNo(String registrationNo) { 
     this.registrationNo = registrationNo; 
    } 

    public String getModel() { 
     return model; 
    } 

    public void setModel(String model) { 
     this.model = model; 
    } 

    public String getDriver() { 
     return driver; 
    } 

    public void setDriver(String driver) { 
     this.driver = driver; 
    } 

    public String getContact() { 
     return contact; 
    } 

    public void setContact(String contact) { 
     this.contact = contact; 
    } 

    @Override 
    public String toString() { 
     return model + " " + registrationNo + " - " + driver; 
    } 
} 

Jetzt habe ich eine Arraylist dieses Objekt erstellt:

ArrayList<busObj> busList; 

Was ich dann zu meinem Adapter zuweisen verwenden und meine Listenansicht:

protected void setBusSpinner() { 
     bAdapter = new ArrayAdapter<busObj>(this, R.layout.simple_list_item, busList); 
     bAdapter.notifyDataSetChanged(); 
     spBus.setAdapter(bAdapter); 
    } 

nun der obige Code funktioniert alles, aber mein Problem ist, ich auf der gleichen Tätigkeit eine Liste (nicht ein Fragment) so Wenn der Benutzer auf ein Element in dieser Liste klickt, sollten die Daten im Formular ausgefüllt werden.

Ich kann dies mit EditText und TextView usw. tun, aber wenn es zum Spinner kommt, habe ich keine Ahnung, wie man das macht, da ich den tatsächlichen Gegenstand nicht die Position habe.

In meinem Fall wird ein ausgewähltes Element ein "bankObj" sein, aber wie Sie aus meinem Code sehen können, habe ich die Eigenschaft "toString()" überschrieben, um den Text anstelle des Objekts anzuzeigen.

Also angenommen, ich habe ein Objekt mit der ID 1 Wie stelle ich das als das aktuell ausgewählte Element in meinem Spinner?

Ich habe einige ähnliche Fragen auf Stack-Überlauf gesehen wie: How to set selected item of Spinner by value, not by position?, aber keine haben für mich bisher funktioniert.

+0

Ich weiß nicht, ob ich Ihre Frage richtig habe, aber Spinner hat 'onItemSelectedListener' Schnittstelle, die' onItemSelected (AdapterView parent, View arg1, int pos, lange id) ', die Ihnen helfen könnte. Dies gibt die ausgewählte Position im Adapter an. –

+0

Nein, das Element wird aus einer Listenansicht ausgewählt. Das Zahlenauswahlfeld befindet sich im Formular in derselben Aktivität. Wenn der Benutzer also auf ein Element in der Listenansicht tippt, sollte der Spinner zum Wert des ausgewählten Elements wechseln. In meinem Fall ist das ausgewählte Objekt immer ein Objekt. – user3718908

Antwort

0

Haben Sie versucht, bankObj.getId() zu bekommen?

Verwandte Themen