在android中显示sqlite数据库的图像?

时间:2012-05-16 17:22:00

标签: android

我想在我的应用程序中显示sqlite数据库中的图像。我的要求是显示文本视图及其相关图像。我将我的数据库文件保存在assets文件夹中。 但实际上我的图像存储在服务器的“allimages”文件夹中。

我的数据库列(我保存的资产文件夹中的db)如下:

S.No Description

1 div style =“text-align:justify;”> Gandhiji是一个伟大的领导者img height =“194”width =“281”src =“/ allimages / img.png”alt =“”div

2 div style =“text-align:justify;”> Subash是一个伟大的领导者img height =“194”width =“281”src =“/ allimages / img.png”alt =“”/>
- ------------- - ------------ - ------------ - ------------ - -----------------

现在我的问题出现在我的数据库中,图像路径存储在描述栏中。在android中我们无法在drawable文件夹中创建新文件夹并引用图像的路径。我的数据库包含2000到3000条记录。现在我无法更改本地数据库中图像的路径。那么我应该在哪里创建项目文件夹中的“allimages”文件夹,如何引用这些图像呢?有人请帮我解决这个问题.....我正在努力解决这个问题......

提前致谢.....

1 个答案:

答案 0 :(得分:0)

根据您的上述评论:

您可以通过循环

更新数据库中的所有元素

看起来你的描述是独一无二的,所以不幸的是,你需要从数据库中提取数据,把它放到某种列表中,修改列表来改变路径,然后用数据库更新数据库。修改后的价值观。

注意:您只需要执行此操作一次,但如果要更新数千条记录,则需要一些时间。

以下是您更新所有路径时需要执行的步骤的一些伪代码。

获取所有记录,提取数据并修改路径

//Get all the records
Cursor allRecords = database.query(Table_Name, null, null, null, null, null, null);

//Extract the data from the Cursor and create a list
List<SomeDataObject> listOfModifiedDataObjects = new ArrayList<SomeDataObject>();

allRecords.moveToFirst();

while(!allRecords.isAfterLast())
{
    int id = allRecords.getInt(allRecords.getColumnIndex("NameOfIDColumn"));
    String description = allRecords.getString(allRecords.getColumnIndex("NameOfDescriptionColumn"));

    //Modify the description to change the path of the src...
    description = description.replace("allimages", "some/other/path/allimages");

    //Create the data object and store it in the list
    SomeDataObject tempObj = new SomeDataObject();
    tempObj.ID = id;
    tempObj.Description = description;

    listOfModifiedDataObjects.add(tempObj);

}

使用修改后的数据更新数据库 注意:这应该在一些可以访问SQLiteDatabase对象的数据库帮助程序类中完成

//Iterate through all the modified data objects
for(SomeDataObject curObj: listOfModifiedDataObjects)
{
    ContentValues values = new ContentValues();

    //Set the new description into the content values object
    values.put("NameOfDescriptionColumn", curObj.Description);

    //Update the table with the new value. The record that gets updated is based on the curObj.ID.
    //In this case, I'm guessing your id column is named "_id"
    database.update(TABLE_NAME, values, "_id = ?", new String[]{String.ValueOf(curObj.ID)});
}

我还没有编译任何这些代码而且没有IDE方便,所以可能会有轻微的错别字。但希望这可以让您大致了解如何更新每条记录。