2017-07-02 1 views
0

Ich habe einige Probleme, Spinner aus SQLite-Datenbank mit einfachen Cursor-Adapter zu füllen. Ich muss den einfachen Cursor-Adapter verwenden, nicht den Array-Adapter. Meine MainActivity, Funktionen und XML-Dateien sind wie folgt:Füllen Spinner von einfachen Cursor-Adapter

public class MainActivity extends BaseActivity { 


    private Spinner workerId = (Spinner) findViewById(R.id.spinner); 

    c = getCursor(); 

    String[] columns = new String[]{Database.mylist}; 
    int[] to = new int[] { R.id.spinner }; 
    myAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, c, columns,to, 0); 
    workerId.setAdapter(myAdapter); 

    .............. 
    .............. 
    } 

Funktion ist unten:

public Cursor getCursor() { 
    Cursor c = database.rawQuery("select * from " + Database.mylist + " where isCancel = 0", null); 
    return c; 
} 

XML-Datei ist unten;

 MainActivity.xml 


    <Spinner 
     android:id="@+id/spinner" 
     android:layout_width="match_parent" 
     android:layout_marginTop="10dp" 
     android:layout_marginLeft="5dp" 
     android:layout_height="wrap_content" /> 

Und wenn ich app ausführen wird der folgende Bildschirm angezeigt. Es gibt Daten, aber es scheint leer zu sein. Ich habe _id, Namenspalten.

empty spinner

Vielen Dank für Ihre Hilfe.

+1

Zeigt 'Database.myList' auf den Namen einer Tabelle oder den Namen einer Spalte? Weil du es als beides verwendest. Haben Sie überprüft, ob Ihre 'getCursor()' Methode einen 'Cursor' mit irgendwelchen Zeilen zurückgibt? – PPartisan

Antwort

0

ändern

int[] to = new int[] { R.id.spinner }; 

zu

int[] to = new int[] { android.R.id.text1 }; 

Und Sie können ein bisschen mehr über SimpleCursorAdapter hier lesen: Android: Using SimpleCursorAdapter to get Data from Database to ListView

Auch sind Sie Database.mylist als Spaltennamen und Tabellennamen wie PPartisan in einem Kommentar darauf hingewiesen hat.

+0

Zeichenfolge [] columns = new Zeichenfolge [] {Database.mylist}; wird String [] columns = new String [] {Database.col_name}; Ich habe es falsch geschrieben. Aber es löst das Problem nicht. – Worker

+0

Danke Josef. Jetzt funktioniert es. – Worker