我想在我的应用程序中显示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”文件夹,如何引用这些图像呢?有人请帮我解决这个问题.....我正在努力解决这个问题......
提前致谢.....
答案 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方便,所以可能会有轻微的错别字。但希望这可以让您大致了解如何更新每条记录。