Auffüllen Spinner Aus Der SQLite-Datenbank Von Android
Versuche ich zu machen, eine dynamische drop-down-gefüllt wird, die durch eine SQLite-Tabelle. Ich habe ein Cursor-Objekt, die ich ziehen kann, die Daten brauche ich von. Ich habe in der Lage zu erreichen, laden der Werte in der drop-down mit den folgenden code:
Spinner s = (Spinner) findViewById(R.id.spinner);
ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s.setAdapter(adapter);
try{
Cursor cursor = getAccounts();
int accountnameIndex = cursor.getColumnIndexOrThrow(ACCOUNT_NAME);
if(cursor.moveToFirst()){
do{
adapter.add(cursor.getString(accountnameIndex));
} while(cursor.moveToNext());
}
} finally {
MintLink.close();
}
Mein problem ist, dass ich brauche, die eine Auswahl aus der Dropdown-auch enthalten die Zeilennummer des ausgewählten Elements. Ich muss in der Lage sein, markieren Sie ein Element und haben Zugriff auf den Wert der Artikel im Backend. Denken Sie zum Beispiel in einem Dropdown in HTML. Jedes drop-down-Auswahl hat seine eigenen versteckten Wert, der gezogen wird. Ich brauche diesen Wert zu versteckt für mich, mir zu erlauben, zu wissen, welche ID Sie wählen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie es mit einem
SimpleCursorAdapter
anstatt Sie zu kopieren alle Daten von hand in eineArrayAdapter
.SimpleCursorAdapter
deprecated Warnung jetzt. Was ist den nun nutzenint flags
Parameter am Ende, dass Sie verwenden können, wenn Sie Ihreandroid:minSdkVersion
ist auf 11 oder höher. Wenn Ihrandroid:minSdkVersion
ist niedriger als das, würde ich nur stick mit der veralteten Konstruktor für jetzt.Dies ist eine alte Frage, aber die erste, die ich gefunden, wenn herauszufinden, das Problem. Hier ist eine ausführliche Erklärung mit voller Quelle, die schneiden kann einige Beinarbeit.
Die Antwort ist in der Tat zu verwenden, einen SimpleCursorAdapter mit einer Liste von strings, sondern hat auch eine Besondere Behandlung für ein passendes ID-Feld ist, wird zurückgegeben, wenn eine Zeile ausgewählt ist. Der Schlüssel zu dieser Arbeit ist zu wissen, die beiden folgenden obskuren bits von Informationen:
1) Beim erstellen der cursor stellen Sie sicher, dass die Abfrage ein Feld mit dem Titel "_id". Dieses Feld muss nicht angezeigt werden, irgendwo, aber es ist Wert wird zurückgegeben, wenn ein Listenelement ausgewählt ist.
2) Bei der Erstellung eines SimpleCursorAdapter Sie brauchen, um die Versorgung der TextView-layout-IDs in die Zeile text platziert wird. Wenn Sie mit der android mitgelieferten layout-android.R.layout.simple_spinner_item die text-id, die Sie verwenden müssen, ist android.R.id.text1.
Main.xml
Tätigkeit code:
Hier ist eine weitere Antwort mit Frontlader und Cursor.
In der Tätigkeit/fragment-Erstellung (sagte fragment/activity implementieren muss
LoaderManager.LoaderCallbacks<Cursor>
):In Ihrer Aktivität/fragment:
Hier ist die cursor-adapter:
Hier ist der cursor loader:
Mit diesem erhalten Sie:
Beispiel für eine Datenbindung finden Sie hier.
http://developer.android.com/guide/topics/ui/binding.html
check "Füllen das Layout mit Daten" - Abschnitt für die Verwendung von
SimpleCursorAdapter