2016-07-30 22 views
0

Ich möchte, dass meine App Bilder aus dem Gerätespeicher abrufen und anzeigen kann, wenn kein Internet verfügbar ist. Wenn die App zum ersten Mal mit Internet geladen wird, lade ich die Bilder in einen Ordner und später auch ohne Internet herunter Ich frage es vom lokalen Speicher zu öffnen. Meine Bilder werden an diesem Ort gespeichertWie benutze ich Picasso, um ein lokal in Android gespeichertes Bild zu öffnen?

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

Auf Volley Antwort, die ich den folgenden Code aufrufen, die verwendet wird, um den Adapter für den recyclerview einstellen .

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; 

    } 

Und auf Antwort von Volley nenne ich das obige Verfahren wie folgt: -

ArrayList androidVersions = showJSON(response); 

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

Und in meinem Dataadapter verwende ich Picasso die Bilder anzuzeigen, wie folgt: -

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

Dies ist ein Teil meiner Log-Katze: -

07-30 13: 44: 12.633 16766-16766/com.inevitablesol.shatayushiapp I/dalvikvm: DexOpt: illegale Methodenzugriff (Anruf Landroid/support/v7/widget/RecyclerView $ ViewHolder; .isUpdated() Z von Lcom/inevitablesol/shatayushiapp/Adapter/Dataadapter $ ViewHolder;) 07-30 13: 44: 12,633 16.766-16.766/com.inevitablesol.shatayushiapp I/dalvikvm: Es konnte kein Verfahren android.support.v7.widget.RecyclerView $ ViewHolder.isUpdated finden 44: 12,633 16.766-16.766/com.inevitablesol.shatayushiapp W/dalvikvm: VFY: nicht in der Lage virtuellen zu lösen, com.inevitablesol.shatayushiapp.adapter.DataAdapter $ ViewHolder.access $ Super 07-30 13 von Methode verwiesen Methode 17450: Landroid/Unterstützung/v7/Widget/R ecyclerView $ ViewHolder; .isUpdated() Z

Welche illegalen Methode Zugriff sagt und Verfahren finden konnte nicht android.support.v7.widget.RecyclerView$ViewHolder.isUpdated von Verfahren verwiesen com.inevitablesol.shatayushiapp.adapter.DataAdapter$ViewHolder.access$super.

Kann mir bitte jemand helfen mit einer Lösung Ich bin neu in der Programmierung.Vielen Dank.

+0

Vielen Dank für das Bearbeiten @AmitVaghela können Sie mit einer Lösung laden helfen. – anup

Antwort

2

können Sie wie unten Weg zu Datei von SDCARD/Gerät Speicher laden: in Ihrem Fall müssen Sie identifizieren, wenn Datei im Speicher verfügbar ist oder nicht. dann entscheiden, von Web- oder Speicher

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

sicherstellen, dass Sie vorbei fullpath von Bild

lesen von documentaion

+0

Dank Dhawal funktioniert wie ein Charme. Mach weiter so. – anup