Android - 在数据库中存储/设置imageResource路径?

时间:2011-03-14 23:06:30

标签: android listview imageview

Cursor c = dbHelper.getMostRecent();
String[] from = new String[] { "name", "data", "thumb" };
int[] to = new int[] { R.id.activityName, R.id.activityData, R.id.activityThumb };

startManagingCursor(c);
SimpleCursorAdapter activities;
activities = new SimpleCursorAdapter(this, R.layout.activitywidget, c, from, to);
setListAdapter(activities);

在第二行,我从数据库中获取名称,数据和拇指。 在第三行,我为activityName(TextView),activityData(TextView)和activityThumb(ImageView)设置了这些值。

它适用于“名称”和“数据”,但我不知道该为“拇指”放什么。 我在/ res / drawable /中有一些图像,但我不知道如何将它们存储在数据库中(文件路径为字符串?R.drawable.IMAGE_NAME为字符串?我是否需要将其保存为原始数据? ?)

最佳案例场景:我想告诉列表中每个activityThumb的实例应该使用哪个图像路径作为其资源。

编辑:我通过创建SimpleCursorAdaptor的实现并覆盖bindView来解决这个问题。

2 个答案:

答案 0 :(得分:0)

R.drawable.IMAGE_NAME是一个整数。您可以将其存储到数据库中,但它可能会在下一次构建时更改并中断所有现有数据库。

您可以使用2个字段执行枚举:一个可以存储在数据库中的“外部表示”字符串和一个表示资源标识符的int。您还需要一种从字符串表示中恢复枚举的方法,例如:使用地图。

答案 1 :(得分:0)

我通过创建SimpleCursorAdaptor的实现并覆盖bindView来解决这个问题。

public void bindView(View view, Context context, Cursor cursor) {
    ImageView imageView = (ImageView) view.findViewById(R.id.image);

    //do stuff with image here

    super.bindView(view, context, cursor);

}