2016-07-30 82 views
0

我希望我的應用程序能夠在沒有可用的互聯網時從設備存儲中檢索和顯示圖像。因此,當應用程序第一次加載互聯網時,我將圖像下載到文件夾中,之後當沒有互聯網時我要求它從本地存儲打開。 我的圖片存儲在這個位置如何使用畢加索在android中打開本地存儲的圖像?

/storage/emulated/0/shatayushi/shatayushi_cover3.jpg

在凌空響應我叫下面的代碼是用來設置適配器爲recyclerview 。

public ArrayList showJSON(String json) { 
     ParseJSON pj = new ParseJSON(json); 
     pj.parseJSON(); 

     image_url = ParseJSON.img_url; 
     mag_version = ParseJSON.magversion; 
     download_path = ParseJSON.download_url; 
     sample_url = ParseJSON.sample_url; 

     for (String img : image_url) { 
      downloadImages(img); 
     } 

     File sh_images = new File(Environment.getExternalStorageDirectory()+"/shatayushi"); 
     String[] img_files = sh_images.list(new FilenameFilter() { 
      @Override 
      public boolean accept(File dir, String filename) 
      { 
       if (filename.toLowerCase().endsWith(".jpg")) 
       { 
        return true; 
       }else { 
        return false; 
       } 
      } 
     }); 

     String stored_imgurl[]= new String[img_files.length]; 

    for (int i=0; i<img_files.length;i++) 
    { 
     stored_imgurl[i]="/storage/emulated/0/shatayushi/"+img_files[i]; 
    } 

     Log.d("StoredImages",stored_imgurl[0]); 


     ArrayList android_version = new ArrayList<>(); 


     for (int i = 0; i < image_url.length; i++) { 
      MagazineVersion magazineVersion = new MagazineVersion(); 
      magazineVersion.setMagazine_version_name(mag_version[i]); 
      magazineVersion.setMagazine_image_url(image_url[i]); 
      magazineVersion.setDownload_url(download_path[i]); 
      magazineVersion.setSample_url(sample_url[i]); 
      magazineVersion.setStored_imgurl(stored_imgurl[i]); 
      android_version.add(magazineVersion); 
     } 
     return android_version; 

    } 

而上凌空的響應我調用上述方法如下: -

ArrayList androidVersions = showJSON(response); 

         DataAdapter adapter = new DataAdapter(DisplayMagazine.this, androidVersions); 
         recyclerView.setAdapter(adapter); 

和我的DataAdapter內我使用畢加索如下來顯示圖像: -

Picasso.with(context).load(magazineVersions.get(position).getStored_imgurl()).resize(400, 500).into(holder.iv_magazine); 

這是我的日誌貓的一部分: -

07-30 (調用 Landroid/support/v7/widget/RecyclerView $ ViewHolder; .isUpdated()Z from Lcom/inevitablesol/var/dvvvvv:DexOpt:非法訪問方法(請撥打 ) shatayushiapp/adapter/DataAdapter $ ViewHolder;) 07-30 13:44:12.633 16766-16766/com.inevitablesol.shatayushiapp I/dalvikvm:找不到方法 android.support.v7.widget.RecyclerView $ ViewHolder.isUpdated 44:12.633 16766-16766/com.inevitablesol.shatayushiapp W/dalvikvm:, 從方法 com.inevitablesol.shatayushiapp.adapter.DataAdapter $ ViewHolder.access $超級 07-30 13引用VFY:無法解決虛擬方法17450: Landroid/support/v7/widget/R ecyclerView $ ViewHolder; .isUpdated()z

它說非法方法訪問,但沒有找到方法android.support.v7.widget.RecyclerView$ViewHolder.isUpdated,從方法com.inevitablesol.shatayushiapp.adapter.DataAdapter$ViewHolder.access$super引用。

任何人都可以請幫助我一個解決方案我是編程新手。謝謝。

+0

通過圖像

閱讀FULLPATH謝謝你的編輯@AmitVaghela你可以用一個解決方案幫助。 – anup

回答

2

你可以像下面的方式使用從SDCARD /設備存儲加載文件:在你的情況下,你必須確定文件是否存儲在或不存在。然後決定從網絡或存儲負載

Picasso.with(context).load("file:///android_asset/DvpvklR.png").into(imageView2); 
Picasso.with(context).load(new File(...)).into(imageView3); 

確保你從documentaion

+0

感謝Dhawal的魅力。保持良好的工作。 – anup

相關問題