Android ListView: как избежать запросов к базе данных в bindView ()? Необходимо получить данные об отношениях один ко многим
У меня есть представление списка для отображения альбомов. В каждом элементе списка альбомов мне нужно отобразить некоторую информацию из каждой фотографии в этом альбоме. Вот как выглядит мой загрузчик курсоров:
@Override
public Loader 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();
}
По сути, я позволяю загрузчику курсора управлять запросом альбома, и каждый раз в bindView я запрашиваю фотографии из переданного курсора альбома. Я чувствую, что это может быть проблемой производительности. Есть ли лучший способ сделать это?