2014-03-04 31 views
0

我的應用程序使用相機拍攝照片。然後獲取URI,然後獲取該照片的路徑並將路徑存儲在SQLite數據庫中。所有這些似乎工作得很好,但是當我將圖像作爲位圖查看時,此代碼僅顯示每個記錄的相同圖像(最後一個)(每個記錄上的所有其他信息都正確顯示)。如何拍攝多個圖像路徑並將其轉換爲位圖

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inSampleSize = 8; 
mPhoto = BitmapFactory.decodeFile(timage.toString(), options); 
viewHolder.img_image = (ImageView) convertView.findViewById(R.id.image); 
viewHolder.img_image.setImageBitmap(mPhoto); 

這是我得到timage的信息,以及記錄的細節休息:

public ArrayList<ProductModel> _productlist = new ArrayList<ProductModel>(); 
ArrayList<ProductModel> product_list = db.getProducts(); 

for (int i = 0; i < product_list.size(); i++) { 
    String tidno = product_list.get(i).getIdno(); 

    System.out.println("tidno>>>>>" + tidno); 
    timage = product_list.get(i).getImage(); 
    System.out.println(timage); 
    String tname = product_list.get(i).getProductname(); 
    String tdesc = product_list.get(i).getproductdesc(); 

    ProductModel _ProductModel = new ProductModel(); 

    _ProductModel.setIdno(tidno); 
    _ProductModel.setImage(timage); 
    _ProductModel.setProductname(tname); 
    _ProductModel.setproductdesc(tdesc); 

    _productlist.add(_ProductModel); 
} 

totalrecords.setText("Total Records :-" + _productlist.size()); 
listview.setAdapter(new ListAdapter(this)); 
db.close(); 

第3行是基於維諾的答案從Suggestions to avoid bitmap Out of Memory error - 縮放圖像的擺脫我以前收到的內存不足錯誤。 mPhoto只是一個Bitmap變量,timage是圖像路徑(它正確地打印到控制檯上)。

任何人都能給我一個正確的方向提示,讓應用程序顯示每個圖像,而不是最後一個?

+0

什麼是timage,它來自哪裏? – Merlevede

+0

@Merlevede timage是一個字符串。我有一個名爲productlist的數組列表,並且timage用於獲取該列表的圖像路徑,它將與產品ID,名稱和描述一起輸入到列表中(所有這些都可以正確顯示每條記錄)I已發佈 – user3027078

回答

0

該變量timage正在保存for迭代中最後一項的值。

for (int i = 0; i < product_list.size(); i++) 
{ 
    //... 
    timage = product_list.get(i).getImage(); 
    //... 
} 

所以退出循環timage將有最後一個項目的值。當然這裏有

mPhoto = BitmapFactory.decodeFile(timage.toString(), options); 

它被用於所有圖像。你不應該使用_ProductModel.getImage()嗎?

+0

以上的代碼段謝謝。我認爲你的答案是正確的,但不幸的是,_ProductModel.getImage()似乎產生了同樣的問題。 – user3027078

相關問題