Come posso creare una lista Matrice (l'elenco mostra Primo alfabeto quando si scorre) con i dati del cursore?Come posso creare una lista Array con i dati del cursore in Android
risposta
Passare attraverso tutti gli elementi nello Cursor
e aggiungerli uno alla volta allo ArrayList
.
ArrayList<WhateverTypeYouWant> mArrayList = new ArrayList<WhateverTypeYouWant>();
for(mCursor.moveToFirst(); !mCursor.isAfterLast(); mCursor.moveToNext()) {
// The Cursor is now set to the right position
mArrayList.add(mCursor.getWhateverTypeYouWant(WHATEVER_COLUMN_INDEX_YOU_WANT));
}
(sostituire WhateverTypeYouWant
con qualsiasi tipo si vuole fare un ArrayList
di, e WHATEVER_COLUMN_INDEX_YOU_WANT
con l'indice di colonna del valore che si desidera ottenere dal cursore.)
Ciao, La cosa importante che voglio fare è visualizzare "Pugno personaggio" nella mia lista. Dopo aver ottenuto tutti i dati dal cursore, non so come convertirlo in un array String [] per ottenere "Primo carattere". Sembra qualcosa come questo char firstLetter = mString [firstVisibleItem] .charAt (0); – Dennie
Amici: il ciclo for qui sopra non è completamente a destra (condizione e incremento anre scambiati). Usa 'for (mCursor.moveToFirst();! MCursor.isAfterLast(); mCursor.moveToNext()) {}' –
Questo tipo di ciclo è un po 'orribile da leggere. La soluzione di @PearsonArtPhoto è molto più elegante e più facile da leggere. – WarrenFaith
Una correzione rapida: il ciclo for sopra salta il primo elemento del cursore. Per includere il primo elemento, utilizzare questo:
ArrayList<String> mArrayList = new ArrayList<String>();
mCursor.moveToFirst();
while(!mCursor.isAfterLast()) {
mArrayList.add(mCursor.getString(mCursor.getColumnIndex(dbAdapter.KEY_NAME))); //add the item
mCursor.moveToNext();
}
ottimo punto imbrizi. Questo è un modo molto migliore per scorrere gli elementi del Cursore – DonnaLea
come aggiungere due o più valori di colonna ?? –
Anche meglio di @ di imbrizi risposta è questa:
ArrayList<String> mArrayList = new ArrayList<String>();
while(mCursor.moveToNext()) {
mArrayList.add(mCursor.getString(mCursor.getColumnIndex(dbAdapter.KEY_NAME))); //add the item
}
moveToNext()
restituirà false se non c'è nulla di sinistra, quindi questo riduce la SLOC da pochi, ed è più facile da vedere.
Ancora meglio è ottenere l'indice della colonna all'esterno del ciclo.
ArrayList<String> mArrayList = new ArrayList<String>();
int columnIndex=mCursor.getColumnIndex(dbAdapter.KEY_NAME)
while(mCursor.moveToNext()) {
mArrayList.add(mCursor.getString(columnIndex)); //add the item
}
Questo ha funzionato molto bene per me perché volevo un ArrayList di oggetti:
List<MyObject> myList = new ArrayList<String>();
Cursor c = ...
while(c.moveToNext()) {
myList.add(new MyObject(cursor.getInt(cursor.getColumnIndex("_id")), cursor.getString(cursor.getColumnIndex("column1")), cursor.getInt(cursor.getColumnIndex("column2")));
}
c.close();
Basta fare un POJO MyObject
e assicurarsi che ha un costruttore.
Si desidera creare un 'ArrayList' con i dati di un cursore? –