Come posso creare un elenco Array con i dati del cursore in Android?

Come posso creare un elenco Array (l'elenco visualizza il primo alfabeto quando si fa scorrere) con i dati del cursore?

  • Crash: java.lang.NoClassDefFoundError: android.support.v7.appcompat.R $ layout
  • IllegalArgumentException: Il tipo di windows non può essere modificato dopo che viene aggiunta la window
  • Edizione di Eclipse e Android SDK "aapt.exe si è arrestato"
  • Che cosa innesca (o genera) KeyEvent.ACTION_MULTIPLE?
  • Come utilizzare layout_aspectRatio nella PercentRelativeLayout?
  • Fotocamera di qualsiasi emulatore che non funziona
  • Autorizzazione BroadcastReceiver per la shell adb
  • Aggiungere automaticamente l'attività a Manifest?
  • Come installare l'emulatore di android 6.0.1 in Android Studio?
  • Come raggruppare le risorse delle immagini di React Native in Android?
  • Scorrere una list visualizza tutto da Bianco a Nero
  • Scorrimento dell'elemento ListView Da destra a sinistra, mostrare il button di cancellazione
  • 4 Solutions collect form web for “Come posso creare un elenco Array con i dati del cursore in Android?”

    Passare attraverso tutti gli elementi del Cursor e aggiungerli uno ad uno 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 qualunque tipo si desidera creare un ArrayList di e WHATEVER_COLUMN_INDEX_YOU_WANT con l'indice di colonna del valore che si desidera get dal cursore.)

    Una correzione rapida: il for loop 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(); } 

    Anche meglio della risposta di @ imbrizi è questo:

     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 più, in modo da ridurre lo SLOC da pochi e è più facile da vedere.

    Ancora meglio è get l'indice della colonna al di fuori 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 veramente bene per me perché ho voluto un arrayslist 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 MyObject e assicurarsi di avere un constructor.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.