Android ListView: jak uniknąć zapytania do bazy danych w bindView ()? Musisz pobrać od jednej do wielu danych relacji
Mam widok listy do wyświetlania albumów. W każdym elemencie listy albumów muszę wyświetlić niektóre informacje z każdego zdjęcia w tym albumie. Oto jak wygląda moja ładowarka kursora:
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return new CursorLoader(this, AlbumsColumns.CONTENT_URI, null, null, null, null);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
long albumId = cursor.getLong(cursor.getColumnIndex(AlbumsColumns._ID));
Cursor photoCursor = getContentResolver().query(PhotosColumns.CONTENT_URI, null, PhotosColumns.ALBUM_ID + " = ?",
new String[]{Long.toString(albumId)}, null);
if (photoCursor.moveToFirst()){
do{
// Here I collect the information from each photo in the album
}while(photoCursor.moveToNext());
}
photoCursor.close();
}
Zasadniczo pozwalam programowi ładującemu kursor zarządzać zapytaniem o album, a za każdym razem w bindView sprawdzam zdjęcia z przekazanego kursora albumu. Myślę, że może to być problem z wydajnością. Czy jest lepszy sposób na zrobienie tego?