Использование изображений из базы данных с URL
Я кеширую все данные, которые получаю в своем приложении, внутри БД SQLite... Всякий раз, когда у пользователя нет подключения к Интернету, данные загружаются с помощью SimpleCursorAdapter из базы данных. База данных также содержит URL изображений. Изображения кэшируются используемой мной платформой загрузки изображений (Universal-Image-Loader), поэтому, когда я запускаю фреймворк с URL-адресом из базы данных, он получает кэшированное изображение. У меня вопрос, как я могу вызвать этот метод внутри моего SimpleCursorAdapter? До сих пор я мог только получить все тексты из базы данных и прикрепить их к TextViews...
Спасибо за вашу помощь!
1 ответ
Так что я наконец смог сделать это сам...
Мне пришлось написать новый метод, который расширяет CursorAdapter...
Там я должен был назначить все свои тексты, которые я получил из моей БД, с помощью TextView. Поэтому я также смог дать своему загрузчику изображений ссылку на (кэшированное) изображение для загрузки...
Это мой код:
private static final class MyCursorAdapter extends CursorAdapter {
MyCursorAdapter(Context context, Cursor cursor, int flags) {
super(context, cursor, flags);
mInflater = LayoutInflater.from(context);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View v = mInflater.inflate(R.layout.row_twitter, parent, false);
return v;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView listtitle = (TextView) view.findViewById(R.id.listtitle);
TextView listusername = (TextView) view.findViewById(R.id.listusername);
TextView listdate = (TextView) view.findViewById(R.id.listdate);
listtitle.setText(cursor.getString(cursor.getColumnIndex(DataDBAdapter.KEY_TWITTER_TWEET)));
listusername.setText(cursor.getString(cursor.getColumnIndex(DataDBAdapter.KEY_TWITTER_USERNAME)));
listdate.setText(cursor.getString(cursor.getColumnIndex(DataDBAdapter.KEY_TWITTER_DATE)));
listtitle.setTextColor(Color.GRAY);
listdate.setTextColor(Color.GRAY);
ImageView iv = (ImageView) view.findViewById(R.id.image);
imageLoader.displayImage(cursor.getString(cursor.getColumnIndex(DataDBAdapter.KEY_TWITTER_IMAGEURL)),
iv, options);
}
LayoutInflater mInflater;
}
И это на самом деле работает довольно хорошо:)