Jak mogę utworzyć listę Array (lista wyświetla pierwszy alfabet podczas przewijania) z danymi kursora?Jak utworzyć listę Array z danymi kursora w Androidzie
Odpowiedz
Przejrzyj wszystkie elementy w Cursor
i dodaj je pojedynczo do 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));
}
(zastąpić WhateverTypeYouWant
z dowolnego typu chcesz dokonać ArrayList
iw WHATEVER_COLUMN_INDEX_YOU_WANT
z indeksu kolumny wartości chcesz dostać od kursora).
Witam, Ważną rzeczą, którą chcę zrobić, jest wyświetlenie "Postaci pięści" na mojej liście. Po uzyskaniu wszystkich danych z kursora, nie wiem jak przekonwertować go na ciąg [] Array, aby uzyskać "First character". Wygląda to tak jak char firstLetter = mString [firstVisibleItem] .charAt (0); – Dennie
Przyjaciele: powyższa pętla for nie jest całkowicie prawidłowa (warunek i przyrost są zamieniane). Użyj 'for (mCursor.moveToFirst();! MCursor.isAfterLast(); mCursor.moveToNext()) {}' –
Ten typ pętli jest dość okropny do odczytania. Rozwiązanie z @PearsonArtPhoto jest o wiele bardziej eleganckie i łatwiejsze do odczytania. – WarrenFaith
jeden szybki korekty: dla pętli powyżej pomija pierwszy element kursora. Aby to pierwszy element, użyj tego:
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();
}
bardzo dobry punkt imbrizi. Jest to znacznie lepszy sposób na przechodzenie między elementami Cursor – DonnaLea
, jak dodać dwie lub więcej wartości kolumny ?? –
Nawet lepiej niż na @ imbrizi odpowiedź jest taka:
ArrayList<String> mArrayList = new ArrayList<String>();
while(mCursor.moveToNext()) {
mArrayList.add(mCursor.getString(mCursor.getColumnIndex(dbAdapter.KEY_NAME))); //add the item
}
moveToNext()
zwróci false, jeśli nie ma nic w lewo, więc ta zmniejsza SLOC przez kilka, i jest łatwiej zobaczyć.
Jeszcze lepiej jest uzyskać indeks kolumny poza pętlą.
ArrayList<String> mArrayList = new ArrayList<String>();
int columnIndex=mCursor.getColumnIndex(dbAdapter.KEY_NAME)
while(mCursor.moveToNext()) {
mArrayList.add(mCursor.getString(columnIndex)); //add the item
}
Ten pracował bardzo dobrze dla mnie, bo chciałem ArrayList obiektów:
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();
prostu zrobić POJO MyObject
i upewnić się, że ma konstruktora.
Chcesz utworzyć "ArrayList" z danymi kursora? –