将图像添加到ListView项目和详细信息

时间:2012-02-09 09:55:14

标签: android image sqlite listview imageview

大家好,我一直在关注本教程:http://coenraets.org/blog/android-samples/androidtutorial/。我得到了我需要的东西,但现在我遇到了问题。 基本上,我需要的是能够为每个员工添加图片。我希望在列表中创建缩略图,并在详细信息页面上显示完整尺寸的照片。 我怎么能这样做?

我尝试在数据库中添加照片标记

String sql = "CREATE TABLE IF NOT EXISTS employee (" +
                        "_id INTEGER PRIMARY KEY AUTOINCREMENT, " + 
                        "firstName TEXT, " +
                        "lastName TEXT, " +
                        "title TEXT, " +
                        "officePhone TEXT, " +
                        "cellPhone TEXT, " +
                        "email TEXT, " +
                        photo IMAGE," + "managerId INTEGER)";
        db.execSQL(sql);

然后我添加了values.put("photo", "@drawable/icon");

然后在EmployeeDetails我添加了这一行:

photo = (ImageView) findViewById(R.id.image);
photo.setTag(cursor.getString(cursor.getColumnIndex("photo")));

我当然导入了ImageViewprotected ImageView photo; 对于我添加的详细信息布局:

<ImageView
        android:id="id/image
        android:layout_width="wrap_content"
        android:layout_heigh=wrap_content

问我是否设法让自己足够清楚。 我试图为员工的详细信息部分写一张照片,我没有尝试制作缩略图,事情就是这样,我做了整件事,它没有出现错误,但是当我运行它时,应用程序崩溃了。

2 个答案:

答案 0 :(得分:0)

使用blob存储并从数据库中重新获取图像,this会提供更好的主意:

您还将db中的资源文件夹路径存储为文本,并使用它从sql检索路径: 那你的sql:

String sql = "CREATE TABLE IF NOT EXISTS employee (" +
                    "_id INTEGER PRIMARY KEY AUTOINCREMENT, " + 
                    "firstName TEXT, " +
                    "lastName TEXT, " +
                    "title TEXT, " +
                    "officePhone TEXT, " +
                    "cellPhone TEXT, " +
                    "email TEXT, " +
                    "photo Text," + 
                    "managerId INTEGER)";
    db.execSQL(sql);

然后您可以通过以下方式从资产文件夹中获取绘图:

Drawable d = Drawable.createFromStream(getAssets().open("path_from_db"), null);
img.setBackgroundResource(d);

答案 1 :(得分:0)

这取决于图像的来源。 托盘thisthis,但是我在将图像从字符串转换为可绘制时也遇到了问题。