如何使用现有数据库中的图像填充listView?

时间:2015-04-17 16:43:57

标签: android sqlite listview android-listview

我正在创建一个衣服购物车应用程序。

我现有的SQLite数据库包含所有项目及其信息,我需要在listView中显示每个项目。我需要显示商品的信息,如品牌,价格,尺寸,商店等,以及商品图片。

因此,这些项目的图像不在我的数据库中,但我确实将它们保存在我的计算机上的文件夹中,我确实知道它们带有哪些项目,并且数据库中的每个项目都有一个id它

因此,为了显示每个项目的图像并在listView中显示正确的图像,我可以将所有图像放入我的可绘制文件夹中,然后将它们与ID 相匹配我从我的数据库中检索的项目?

我已经设置了listView,它显示除了每个项目的图像以外的所有内容,所以有人知道我该怎么做吗?

1 个答案:

答案 0 :(得分:0)

首先,这些图片来自哪里?虽然从技术上讲,您可以将数据库中的图像保存为BLOB(二进制大对象),但是您无法在预安装时对数据库进行播种。如果图像是静态的,那么您需要将它们作为资源。如果图像是动态的(如通过API调用检索的那样),那么比将它们存储为BLOB更好的方法就是将它们原样保存在SD卡或内部存储器中,其名称对应于id。

这就是我要做的。我会在db表中添加一个“imgname”列。此列填充了drawable中相应图像的文件名。它将与查询的其他项目信息一起返回。现在问题是如何在给定文件名的情况下找到资源整数(因为包括ImageView在内的所有视图都不带文件名)?使用此:

int xlShirtId = MyActivity.this.getResources().getIdentifier("shirt_xl", "drawable", 
  MyActivity.this.getPackageName()); // where shirt_xl is the file name

然后只需在任何需要使用imageView.setImageResource(xlShirtId);显示该衬衫的Activity中设置任何ImageView。当然,如果你对id很好,你不必创建这个新列。只需将所有文件命名为id即可。但是id可能不太可读。

在任何情况下都要记住您需要预加载数据库。