0

アプリで取得しているすべてのデータをSQLite DB内にキャッシュしています...ユーザーがインターネットに接続していないときはいつでも、データはデータベースからSimpleCursorAdapterでロードされます。データベースには画像の URL も含まれています。画像は、私が使用している画像読み込みフレームワーク (Universal-Image-Loader) によってキャッシュされるため、データベースからの URL を使用してフレームワークを実行すると、キャッシュされた画像が取得されます。私の質問は、SimpleCursorAdapter 内でこのメソッドを呼び出す方法です。これまで、データベースからすべてのテキストを取得して TextViews に添付することしかできませんでした...

ご協力いただきありがとうございます!

4

1 に答える 1

0

というわけで、やっと自力で完成できました…

CursorAdapter を拡張する新しいメソッドを作成する必要がありました...

そこで、DB から取得したすべてのテキストを 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;
}

そして、これは実際にはかなりうまく機能します:)

于 2013-01-02T10:36:58.063 に答える