【发布时间】:2012-07-25 04:23:11
【问题描述】:
基本上,我正在尝试制作一个类似于 Android 提供的联系人列表。当使用项目填充列表视图时,使用 SimpleCursorAdapter 您可以轻松地让所有名称出现在每个项目的 R.id.textview 中:
private void fillData() {
mCursor = mDbAdapter.fetchAllContacts();
startManagingCursor(mCursor);
String[] from = new String[] {DBAdapter.KEY_NAME};
int[] to = new int[] {R.id.contact_name};
SimpleCursorAdapter contacts = new SimpleCursorAdapter(this, R.layout.contact_view, mCursor, from, to);
this.setListAdapter(contacts);
}
类似的东西。我已经搜索并找到了用于从在线获取图像或在项目中显示一定数量的图像的示例代码(例如,您知道您有 5 个项目,因此您获得了 5 个匹配的图像)。但我真的不知道从哪里开始从我的 SD 卡获取图像,并将它们显示在适当的项目中。图片是根据联系人的 id 命名的,所以我确实有办法调用正确的图片。
非常感谢您朝着正确的方向前进,谢谢!
编辑:@Jeff Gilfelt 给出了一个很好的答案,但是当我说我可以自己弄清楚其余部分时,我继续说得太早了......哈哈。我在 xml 中为联系人声明了一个默认图像,就像 Android 一样。当我实现新的适配器时,它就像将项目压缩成空,我想是因为它在那个位置找到了一个空位图。所以我做了以下事情:
@Override
public void setViewImage(ImageView v, String id) {
File root = Environment.getExternalStorageDirectory();
File path = new File(root, "path/images/thumbs/"+id+".jpg");
if(path.exists()) {
Bitmap bitmap = BitmapStatic.getThumb(id);
v.setImageBitmap(bitmap);
}
else {
super.setViewImage(v, id);
}
}
但这也无济于事。有什么想法吗?
EDIT2:解决了上述问题。就这样吧:
else {
Resources res = mContext.getResources();
Drawable drawable = res.getDrawable(R.drawable.default);
v.setImageDrawable(drawable);
}
希望这对其他人有帮助!请记住,对于此解决方案,您必须在构造函数中添加一个 Context 成员 var 和行 mContext = context。
【问题讨论】: