2016-01-22 81 views
1

我正在開發一個Android應用程序,允許用戶上傳/下載圖像到數據庫(從Amazon AWS供電)。 我現在面臨的問題是,我可以將文件下載成功到一個目錄在ImageView中顯示從數據庫中下載的圖像

/storage/emulated/0/data/myfile.jpg 

但我不能顯示它們爲新的ImageView的。

這裏是我處理顯示方法的方法。需要注意的是RefreshFeedTask.downloadedFiles是位圖的列表如下所示:

do { 
     objectListing = s3Client.listObjects(listObjectsRequest); 
     for (S3ObjectSummary objectSummary : 
       objectListing.getObjectSummaries()) { 

      keys.add(objectSummary.getKey()); 
     } 
     listObjectsRequest.setMarker(objectListing.getNextMarker()); 
    } while (objectListing.isTruncated()); 

    Iterator<String> o = keys.iterator(); 

    while(o.hasNext()) 
    { 

     String n = o.next(); 
     File file = new File(Environment.getExternalStorageDirectory()+"/data/", n); 
     if(!file.exists()) 
     { 
      try { 
       file.createNewFile(); 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 


     TransferObserver observer = transferUtility.download(
       existingBucketName, 
       n, 
       file); 

     Bitmap m = BitmapFactory.decodeFile(file.getAbsolutePath()); 

private void refreshFeed() 
{ 

    new RefreshFeedTask(this).start(); 
    for(Bitmap f : RefreshFeedTask.downloadedFiles) 
    { 
     displayImage(f); 
    } 

} 

private void displayImage(Bitmap f){ 

    ImageView myImage = new ImageView(this); 
    myImage.setImageBitmap(f); 
    myImage.setVisibility(View.VISIBLE); 
    Log.i("Background","Displaying file"); 

} 

任何幫助表示讚賞,因爲我有點新的Android開發,但 Java開發。

回答

0

看起來你還沒有加入你的新ImageView任何視圖,嘗試添加新的ImageView任何容器來顯示它。

parentLayout.addView(theNewImageView); 

另一個提示:如果你想更有效地顯示許多圖像,你可以試試Glide

+0

謝謝!固定它c: – JBishop

0

您在這裏遇到的一個問題是所有權問題。

建議:您剛下載到該位置的文件,您的應用可能不擁有該位置。如果這是一個封閉的生態系統,並且您是該文件的唯一用戶和所有者,則應該在運行該應用程序時創建一個特定於應用程序的目錄。

顯示您在SD卡中不擁有的內容的最佳方式是使用Android中的MediaStore API訪問它們。您需要一個正確路徑的URI,並且通常不建議使用絕對路徑,特別是對於圖像資產。

的一個很好的例子是在這裏: https://dzone.com/articles/displaying-images-sd-card

相關問題