2017-08-17 3 views
1

Ich habe diesen Code, wo es Bilder aus Drawables Ordner bekommt. Ich brauche Bilder in URLs. Ich denke, ich kann es mit Picasso tun, und ich habe versucht, und ich konnte es nicht festnageln.kann nicht laden Bilder von einem Link in android Studio

Ich habe diesen Code in meinem MainActivity:

public Drawable LoadImageFromWebOperations(String url) { 
    try { 
     InputStream is = (InputStream) new URL(url).getContent(); 
     Drawable d = Drawable.createFromStream(is, "image_name"); 
     return d; 
    } catch (Exception e) { 
     return null; 
    } 
} 

private Drawable d1 = LoadImageFromWebOperations("http://uupload.ir/files/aud7_brickone.jpg"); 

private List<App> getApps() { 
    List<App> apps = new ArrayList<>(); 
    apps.add(new App("Google+", d1, 4.6f)); 
    apps.add(new App("Google+", d1, 4.6f)); 
    apps.add(new App("Google+", d1, 4.6f)); 
    apps.add(new App("Google+", d1, 4.6f)); 
    apps.add(new App("Google+", d1, 4.6f)); 
    apps.add(new App("Google+", d1, 4.6f)); 
    apps.add(new App("Google+", d1, 4.6f)); 
    return apps; 
} 

und das ist mein Adapter:

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
    App app = mApps.get(position); 
    holder.imageView.setImageResource(app.getDrawable()); 
    holder.nameTextView.setText(app.getName()); 
    holder.ratingTextView.setText(String.valueOf(app.getRating())); 
} 

und hier APP.JAVA

public class App { 
    private Drawable mDrawable; 
    private String mName; 
    private float mRating; 

    public App (String name, Drawable drawable, float rating){ 
     mName = name; 
     mDrawable = drawable; 
     mRating = rating; 
    } 

    public float getRating(){return mRating;} 
    public Drawable getDrawable(){return mDrawable;} 
    public String getName(){return mName;} 
} 

Ich muss die Bilder aus Link wie: http://uupload.ir/files/aud7_brickone.jpg

Ich kann es nicht passieren!

+0

Sie möchten Bilder von einem drawbaren Ordner oder Remote-Bildern bekommen? – Rajesh

+0

Fernbedienung! aber ich brauche es in "int" umgewandelt werden –

Antwort

1

Es gibt verschiedene Möglichkeiten, ein Bild von einer URL zum Download bereit. Schauen Sie sich die funcion unter:

public static Drawable LoadImageFromWebOperations(String url) { 
    try { 
     InputStream is = (InputStream) new URL(url).getContent(); 
     Drawable d = Drawable.createFromStream(is, "any_image_name"); 
     return d; 
    } catch (Exception e) { 
     return null; 
    } 
} 

Dann zeigen Sie einfach den zurück ziehbar in Ihrem ImageView.

Vergessen Sie nicht, die Internet-Berechtigungen in Ihrem Manifest hinzuzufügen:

<uses-permission android:name="android.permission.INTERNET" />

Sie auch diese andere Methode verwenden, um mit einem AsyncTask oder einem Hintergrund-Thread kombiniert:

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 
    ImageView bmImage; 

    public DownloadImageTask(ImageView bmImage) { 
     this.bmImage = bmImage; 
    } 

    protected Bitmap doInBackground(String url) { 
     String urldisplay = url; 
     Bitmap mIcon = null; 
     try { 
     InputStream in = new java.net.URL(urldisplay).openStream(); 
     mIcon = BitmapFactory.decodeStream(in); 
     } catch (Exception e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 
     return mIcon; 
    } 

    protected void onPostExecute(Bitmap result) { 
     bmImage.setImageBitmap(result); 
    } 
} 

Dann rufen Sie es an, wo Sie es brauchen:

new DownloadImageTask((ImageView) findViewById(R.id.imageView)) 
     .execute("http://uupload.ir/files/aud7_brickone.jpg"); 

Hoffe es hilft :)

+0

danke margabro, ich habe Ihre erste Lösung und jetzt habe ich einen Fehler, der sagt "Change 2. Parameter der Methode" App "von" int "auf" Zeichenbare ". –

+0

und wann Ich tue das, dass ich einen anderen Fehler bekomme, der in meiner Adpater.Java Klasse in onBindViewHolder Code: holder.imageView.setImageResource (app.getDrawable()); –

+0

der Fehler in Catlog ist: Fehler: (45, 58) Fehler: inkompatible Typen: Drawable kann nicht in int konvertiert werden –

0

Sie gleiten zu können, ist Hier Code

Glide.with(Your context).load(your image url).into(holder.Your imageview); 

im Code

Glide.with(context).load(app.getDrawable()).into(holder.imageView); 
0

Sie können entweder Glide oder Picasso verwenden. Aber ich bevorzuge Sie Picasso dafür, weil Picasso Antworten schneller als Glide. Hier ist der Code:

Import Picasso Bibliothek und es funktioniert wie Charme:

Picasso.with(context).load("image url").into(imageview); 
0

u Imageloader seine so besser als picaso verwenden können, wenn u erhalten müssen Bild von net u bekommen müssen/put JSON u cant Last oder Bild oder Text oder irgendetwas ohne JSON erhalten

+0

Ich erhalte hier einen Fehler: holer.imageView.setImageResource (app.getDrawable()); es heißt "Error: (45, 58) error: inkompatible Typen: Drawable kann nicht in int konvertiert werden" –

Verwandte Themen