SQLite
 sql >> база данни >  >> RDS >> SQLite

Android ListView:как да избегнем заявка към база данни в bindView()? Трябва да се извлекат един към много данни за връзката

Току-що имам идея:използвайте друг инструмент за зареждане на курсора вътре в елемента от списъка. Така че това ще бъде като двустепенен курсор за зареждане. Ще публикувам резултатите си по-късно.

Редактиране :

Предложената идея трябва да бъде правилният начин за справяне с проблема. Така че моят код е рефакториран по следния начин:

// 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. Как да актуализирате съществуващи данни с SQLite

  2. Как работи ON CONFLICT в SQLite

  3. Как мога да вмъкна изображение в sqlite база данни

  4. Форматирайте числа със запетая в SQLite

  5. Как работи Round() в SQLite