2012-05-16 75 views
0

我想在我的應用程序中顯示來自sqlite數據庫的圖像。我的要求是顯示一個文本視圖及其相關圖像。我將我的數據庫文件保存在assets文件夾中。 但實際上我的圖像存儲在服務器的「allimages」文件夾中。在android中顯示來自sqlite數據庫的圖像?

我的數據庫列(其中我不停資產文件夾DB)是:

S.No說明

1格風格=「文本對齊:證明;」>甘地是一位偉大的領袖IMG高度=「194」width =「281」src =「/ allimages/img.png」alt =「」div

Subash是一個偉大的領導者img height = 「194」 的寬度= 「281」 SRC = 「/ allimages/img.png」 ALT = 「」/>
- ------------- - ------- ----- - ------------ - ------------ - -----------------

現在我的問題是在我的數據庫中的圖像路徑存儲在描述列中顯示我。在android中,我們無法在可繪製文件夾中創建新文件夾並引用圖像的路徑。我的數據庫包含2000到3000條記錄。現在我不能改變我的本地數據庫中的圖像的路徑。那麼我應該在哪裏創建項目文件夾中的「allimages」文件夾,以及如何引用這些圖像?有人請幫我解決這個問題.....我這個問題掙扎......提前

感謝.....

+0

我不太理解,因爲我不知道你將如何使用相對路徑獲得的圖像,如果他們是在服務器上?但是,爲什麼在從數據庫中檢索描述後不能修改路徑?修改* src =「/ allimages/img並不難。png「* with * src =」/ some/other/path/allimages/img.png *? – Gophermofur

+0

嗨,實際上圖像在服務器上。但現在我會把它們保留在本地。要放在本地,我需要創建一個文件夾「allimages」,因爲我的本地數據庫描述列由該路徑組成src =「/ allimages/img.png」只有na ...所以我該怎麼辦?是否有可能在我的本地數據庫中更改圖像的路徑?如果是這樣,我怎麼能改變1000年的記錄圖像的路徑? – user1399231

回答

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); 

} 

更新與修改後的數據的DATABSE 注:這應該能夠訪問一些數據庫助手類來完成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方便,所以可能有輕微的錯別字。但希望這給你一個關於如何更新每條記錄的總體思路。

相關問題