SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Android ListView:jak uniknąć zapytań do bazy danych w bindView()? Musisz pobrać od jednego do wielu danych o relacjach

Właśnie wpadłem na pomysł:użyj innego modułu ładującego kursory w elemencie listy. Więc to będzie jak dwupoziomowy program do ładowania kursora. Opublikuję moje wyniki później.

Edytuj :

Proponowany pomysł powinien być właściwym sposobem rozwiązania problemu. Więc mój kod jest refaktoryzowany w ten sposób:

// In the list view activity:

    @Override
    public void bindView(View view, Context context, Cursor cursor) {

        AlbumListItem albumListItem = (AlbumListItem)view;

        albumListItem.prepareView(getLoaderManager(), cursor);
    }

// AlbumListItem is a class that has a cursor loader to query photos:
public class AlbumListItem extends RelativeLayout implements LoaderManager.LoaderCallbacks<Cursor>{


public void prepareView(LoaderManager loaderManager, Cursor albumCursor){

    albumId = albumCursor.getLong(albumCursor.getColumnIndex(AlbumsColumns._ID));
    // Other init stuff

    loaderManager.initLoader(UNIQUE_LOADER_ID, null, this);
}

@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {

    // Here is the async query part.

    return new CursorLoader(context, PhotosColumns.CONTENT_URI, null, PhotosColumns.ALBUM_ID + " = ?", new String[]{Long.toString(albumId)}, null);
}

}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa SQLite Quote()

  2. Błąd Android SQLite:numer zmiennej musi mieścić się w zakresie od ?1 do? 999?

  3. Połącz SQLite Count() z GROUP BY, aby dodać kolumnę „Count” do zestawu wyników

  4. Android sqlite db.query prowadzi do CursorIndexOutOfBoundsException

  5. Wybór bazy danych do tworzenia dwóch połączonych tabel?