2017-06-29 2 views
0

Mein Ziel ist:Get Arraylist von Bilddateiobjekt von Arraylist von URL in android

Ich sollte Bildpfad in Bildansicht zeigen, wenn es in Dateiobjekt konvertiert wird.

ich mit einigen Lösungen mit unterschiedlichem Dateiobjekt versuchen sind:

File f=null; 
    URL url = new URL(info4Model.getExternal_photos().get(position).getImage_path()); 
     try { 
     // f = new File(url.toURI());//java.lang.IllegalArgumentException: Expected file scheme in URI: 
      //f = new File(url.getPath());// not showing file object in imageview 
      //f = new File(url.getFile());// not showing file object in imageview 
      f = getFileFromBitmap(info4Model.getExternal_photos().get(position).getImage_path()); 
      //android.os.NetworkOnMainThreadException , AsyncTask option left only? 

     } catch (Exception e) { 


     } 
/////////////////////////////////// 
public static Bitmap getBitmapFromURL(String url) { 
    try { 
     URL url1 = new URL(url); 
     HttpURLConnection connection = (HttpURLConnection) url1.openConnection(); 
     connection.setDoInput(true); 
     connection.connect(); 
     InputStream input = connection.getInputStream(); 
     Bitmap bitmapFrmUrl = BitmapFactory.decodeStream(input); 
     return bitmapFrmUrl; 
    } catch (IOException e) { 
     e.printStackTrace(); 
     return null; 
    }catch (Exception e){ 
     e.printStackTrace(); 
     return null; 
    } 
} 
File getFileFromBitmap(String url) { 
    Bitmap bmp = getBitmapFromURL(url); 

    SimpleDateFormat simpleDateFormat = 
      new SimpleDateFormat("MMddhhmmss"); 
    String dateAsString = simpleDateFormat.format(new Date()); 
    File filesDir = getActivity().getFilesDir(); 
    File imageFile = new File(filesDir, dateAsString + ".png"); 

    OutputStream os; 
    try { 
     os = new FileOutputStream(imageFile); 
     bmp.compress(Bitmap.CompressFormat.PNG, 100, os); 
     os.flush(); 
     os.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return imageFile; 
} 

Hier alle Dateiobjekte Fehler führen in den Kommentaren nach der Anweisung zeigen.

Antwort

0
public class FileModel { 
    File Url; 
    File path; 
    File file; 
    File bitMap; 

    public File getUrl() { 
     return Url; 
    } 

    public void setUrl(File url) { 
     Url = url; 
    } 

    public File getPath() { 
     return path; 
    } 

    public void setPath(File path) { 
     this.path = path; 
    } 

    public File getFile() { 
     return file; 
    } 

    public void setFile(File file) { 
     this.file = file; 
    } 

    public File getBitMap() { 
     return bitMap; 
    } 

    public void setBitMap(File bitMap) { 
     this.bitMap = bitMap; 
    } 
    } 

    ArrayList<FileModel> fileArrayList = new ArrayList<>(); 

FileModel fileModel = new FileModel(); 
     File f=null; 
     URL url = new URL(info4Model.getExternal_photos().get(position).getImage_path()); 
     try { 
      f = new File(url.toURI());//java.lang.IllegalArgumentException: Expected file scheme in URI: 
      fileModel.setUrl(f); 
      f = new File(url.getPath());// not showing file object in imageview 
      fileModel.setPath(f); 
      f = new File(url.getFile());// not showing file object in imageview 
      fileModel.setFile(f); 
      f = getFileFromBitmap(info4Model.getExternal_photos().get(position).getImage_path()); 
      fileModel.setBitMap(f); 
      //android.os.NetworkOnMainThreadException , AsyncTask option left only? 

     } catch (Exception e) { 

      e.printStackTrace(); 
     } 

     fileArrayList.add(fileModel); 

schließlich Datei arraylist ist bereit zu verwenden.

Ich hoffe, es ist hilfreich für Sie ,,,!

+0

Danke, aber alle Objekte haben kommentierte Ergebnisse, wie Sie sehen können. Also meine Frage, um von all diesen niemandem ein einziges File-Objekt zu bekommen, funktioniert. –

+0

Sie müssen eine einzige Modellklasse kisten und dann alle Werte in Modell und Modell in ArrayList einfügen ...! –

1

Wenn u das Bild url..from api ...

Dann Uae picasso zum Laden ur Bild in Imageview wie .. Picasso.with (acticityname.this)

.load erhalten ("IHRE BILD-URL HIER")

.into (imageView);

Und

Für api Ihr Bild Pfad zu laden .. Sie haben mehrt zu verwenden ..

Dafür ..

Datei file = new File (ur Bildpfad); FileBody a1 = neuer FileBody (Datei);

MultipartEntity mpEntity = new MultipartEntity(); mpEntity.addPart ("Parametername", a1);

Hoffe, Sie können Hilfe dabei bekommen.