2013-06-12 51 views
1

我想從遊標返回的Uri(在一個SQLite數據庫列)設置imageView,但它不工作。從光標設置imageView

代碼:

mCursor = mydb.rawQuery("select * from events;", null); 
if (mCursor != null) { 
    mCursor.moveToFirst(); 

String[] from = new String[]{DbHandler.column_id, DbHandler.column_name, DbHandler.column_location, DbHandler.column_date, DbHandler.img_loc}; 
int[] to = new int[] {R.id.textView1, R.id.textView2, R.id.textView3, R.id.textView4, R.id.photoInDb}; 
SimpleCursorAdapter simpleCurs = new SimpleCursorAdapter(this, R.layout.listviewfinal, mCursor, from, to); 
simpleCurs.setViewBinder(new SimpleCursorAdapter.ViewBinder() { 
       @Override 
       public boolean setViewValue(View view, Cursor cursor, int i) { 

       if (view instanceof ImageView) { 

        ImageView image = (ImageView) view; 
        // just to see what is returned by this! 
        Log.d("orange", "images: " + cursor.getString(i)); 
        Bitmap thumbImage = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(cursor.getString(i)), 320, 240); 
        image.setImageBitmap(thumbImage); 
        return true; 
       } 
       return false; 
       } 
      }); 
      listView.setAdapter(simpleCurs); 

什麼想法?

+0

你是ge來自數據庫的圖像網址? –

+0

是的。有一列有照片的Uri保存在SD卡上。 Log.d行返回「images:file:///storage/sdcard0/DCIM/OrangeClubPhotos/1370853592867.jpg」 - 並且文件存在。所以問題在於它沒有在圖像視圖中設置文件。 – kevoroid

回答

1

試試這個代碼,它應該工作,如果你正在得到圖像路徑。

Bitmap thumbImage = BitmapFactory.decodeFile(imagePath); 
image.setImageBitmap(thumbImage); 

編輯:

我覺得你有一些問題,讓圖像路徑。按照以下步驟獲取路徑。

String imagePath= Environment.getExternalStorageDirectory().toString() "folderpath/imageaname.jpg"; 

在你的情況FOLDERPATH是DCIM/OrangeClubPhotos/和形象的名字是1370853592867.jpg

+0

已經試過這個,沒有運氣。該路徑位於DbHandler.img_loc中,該路徑應該通過setViewValue方法在R.id.photoInDb中設置。問題應該在setViewValue的某個地方! – kevoroid

+0

感謝代碼,但圖像的路徑不是靜態的。數據庫中的每行一個圖像應該在列表視圖中與其他4個文本視圖一起分配給視圖。 – kevoroid

0

作家這些簡單的線條

URL url = new URL("http://image10.bizrate-images.com/resize?sq=60&uid=2216744464"); 
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 
imageView.setImageBitmap(bmp); 

或試試這個

File imgFile = new File(「/sdcard/Images/test_image.jpg」); 
if(imgFile.exists()){ 

    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 

    ImageView myImage = (ImageView) findViewById(R.id.imageviewTest); 
    myImage.setImageBitmap(myBitmap); 

} 
+0

這是一個有用的代碼片段,但不希望我需要。我不想在我的imageview中顯示另一張照片。我有我的照片由光標返回的路徑。只是想在imageview中加載它們。 – kevoroid

+0

你只需要用你所需的路徑 –

+0

來代替給定的路徑,我正努力根據上面的代碼來看看什麼是正確的路徑。任何想法? – kevoroid