我正在缓存我在SQLite DB中的应用程序中获取的所有数据...每当用户没有Internet连接时,数据就会从数据库中加载SimpleCursorAdapter。 该数据库还包含图像的URL。图像由我正在使用的图像加载框架(Universal-Image-Loader)缓存,因此当我使用数据库中的URL运行框架时,它将获得缓存的图像。 我的问题是如何在SimpleCursorAdapter中调用此方法? 到目前为止,我只能从数据库中获取所有文本并将它们附加到TextViews ...
感谢您的帮助!
答案 0 :(得分:0)
所以我终于能够自己做到这一点......
我必须编写一个扩展CursorAdapter的新方法......
我必须使用TextView分配我从DB获得的所有文本。所以我也能够为我的Image Loader提供链接到(缓存)图像以加载...
这是我的代码:
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;
}
这实际上非常有效:)