Использование изображений из базы данных с 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;
}

И это на самом деле работает довольно хорошо:)

Другие вопросы по тегам