Я использую GridView и CursorAdapter. Все элементы в GridView имеют разные типы, поэтому мой запрос к базе данных содержит много подзапросов и очень медленный.ListAdapter: Заполнять представления async, внешний запрос
Поэтому я решил использовать простой запрос (выберите только идентификаторы). Все подзапросы должны быть переданы асинхронно в CursorAdapter, как это (фиктивный код). А после запросов базы данных async элемент GridView обновляется.
@Override
public void bindView(View view, Context context, Cursor cursor) {
long id = cursor.getLong(cursor.getColumnIndex(Columns._ID));
ViewLoader.queue(id, view);
}
private class ViewLoader {
public queue(long id, View view) {
Bitmap bitmap = ... // load bitmap from web by using id
String title = ... // query title from database by using id
String subtitle = ... // query subtitle from database by using id
TextView titleView = (TextView) view.findViewById(R.id.title);
titleView.setText(title);
...
// update GridView
}
Каков наилучший подход?
Есть 27 (!) Подзапросов ... Я использую единственную таблицу, которая связана сама по себе ... Я уже использую метод ImageLoader и pagnition. – almisoft
, например. Невозможно ли загрузить строку из базы данных из bindView() асинхронно и просто обновить информацию о записи gridView после этого? – almisoft
Добавить код. Возможно, проблема в иерархии представлений. – EE66