Spinner mit simplecursoradapter

G

Gingerbread

Fortgeschrittenes Mitglied
6
Mein Spinner zeigt Elemente aus einer Datenbank an. Das funktioniert auch mit folgendem Code ganz gut:
Code:
SimpleCursorAdapter spinadapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, mySpinnCursor, new String[] {"name", "_id"}, new int[]{ android.R.id.text1});
	        
	        spinadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
	        
	        
	        Spinner artikel = (Spinner)findViewById(R.id.au_artikel);
	        artikel.setAdapter(spinadapter);

Es werden new String[] {"name", "_id"} in den Spinner eingefügt und "name" wird angezeigt. Wie kann ich jetzt einen onClickListener implementieren, welcher mir die dazugehörige "_id" ausgibt?
 
Gingerbread schrieb:
Mein Spinner zeigt Elemente aus einer Datenbank an. Das funktioniert auch mit folgendem Code ganz gut:
Code:
SimpleCursorAdapter spinadapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, mySpinnCursor, new String[] {"name", "_id"}, new int[]{ android.R.id.text1});
	        
	        spinadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
	        
	        
	        Spinner artikel = (Spinner)findViewById(R.id.au_artikel);
	        artikel.setAdapter(spinadapter);

Es werden new String[] {"name", "_id"} in den Spinner eingefügt und "name" wird angezeigt. Wie kann ich jetzt einen onClickListener implementieren, welcher mir die dazugehörige "_id" ausgibt?

Die Signatur des OnItemClickListeners ist ja die:
Code:
public abstract void onItemClick (AdapterView<?> parent, View view, int position, long id)
position ist die Position im Array (0..size), und id dürfte der Wert von _id sein.
 
Ich merke gerade, dass ich ja bei einem Spinner einen OnItemSelectedListener verwenden muss. Aber dieser hat ja die gleiche Syntax.

Ich bekomme es ja wohl auch hin die "position" des gewählten Elements zu bekommen.
Aber position ist ja nicht gleich _id aus der Datenbank. Die Elemente aus der Datenbank können beliebige ids haben.

Ich würde jetzt das _id Feld nochmal aus der Datenbank auslesen und dies in einen Array speichern. Dann würde ich mir mittels array[position] die geforderte _id ausgeben lassen.

Aber kann ich dies nicht irgendwie sofort machen? Ich habe die _id ja eigentlich schon ausgelesen.
 
Gingerbread schrieb:
Ich merke gerade, dass ich ja bei einem Spinner einen OnItemSelectedListener verwenden muss. Aber dieser hat ja die gleiche Syntax.

Ich bekomme es ja wohl auch hin die "position" des gewählten Elements zu bekommen.
Aber position ist ja nicht gleich _id aus der Datenbank. Die Elemente aus der Datenbank können beliebige ids haben.

Ich würde jetzt das _id Feld nochmal aus der Datenbank auslesen und dies in einen Array speichern. Dann würde ich mir mittels array[position] die geforderte _id ausgeben lassen.

Aber kann ich dies nicht irgendwie sofort machen? Ich habe die _id ja eigentlich schon ausgelesen.
Ja klar, aber was genau ist das Problem? Nimm doch einfach den Wert, der dir übergeben wird, wie oben schon geschrieben:

public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
parent - das ist der Spinner
view - das ist der selektierte Eintrag
position - das ist der Index des Eintrags (0-basierend)
id - das ist der Wert der Spalte _id, die zum Eintrag gehört

Ich hab das auch grad nochmal mit einem ListView und einem OnItemClickListener probiert, das funktioniert definitiv.
 

Ähnliche Themen

B
Antworten
4
Aufrufe
433
bb321
B
FabianDev
Antworten
5
Aufrufe
531
swa00
swa00
MES
Antworten
10
Aufrufe
788
MES
MES
Zurück
Oben Unten