2016-07-30 116 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

相关问题