1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Spinner mit simplecursoradapter

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Gingerbread, 02.03.2011.

  1. Gingerbread, 02.03.2011 #1
    Gingerbread

    Gingerbread Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    110
    Erhaltene Danke:
    6
    Registriert seit:
    21.01.2011
    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?
     
  2. maniac103, 03.03.2011 #2
    maniac103

    maniac103 Android-Lexikon

    Beiträge:
    1,237
    Erhaltene Danke:
    1,157
    Registriert seit:
    24.01.2011
    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.
     
  3. Gingerbread, 03.03.2011 #3
    Gingerbread

    Gingerbread Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    110
    Erhaltene Danke:
    6
    Registriert seit:
    21.01.2011
    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.
     
  4. maniac103, 03.03.2011 #4
    maniac103

    maniac103 Android-Lexikon

    Beiträge:
    1,237
    Erhaltene Danke:
    1,157
    Registriert seit:
    24.01.2011
    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.
     

Diese Seite empfehlen