2017-08-17 3 views
1

J'ai ce code, où il obtient des images de dossier drawables. J'ai besoin d'obtenir des images sous forme d'URL. Je pense que je peux le faire en utilisant Picasso et j'ai essayé et je ne pouvais pas le clouer.ne peut pas obtenir de charger des images à partir d'un lien dans le studio android

J'ai ce code dans mon 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; 
} 

et voici mon adaptateur:

@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())); 
} 

et ici 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;} 
} 

je dois les images de lien comme: http://uupload.ir/files/aud7_brickone.jpg

Je ne peux pas y arriver!

+0

Vous souhaitez obtenir des images à partir d'un dossier pouvant être tracé ou d'images distantes? – Rajesh

+0

à distance! mais j'ai besoin d'être converti en "int" –

Répondre

1

Il existe différentes façons de télécharger une image à partir d'une URL. Vérifiez la funcion ci-dessous:

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; 
    } 
} 

Puis montrent simplement le drawable retourné dans votre ImageView.

Ne pas oublier d'ajouter les autorisations Internet dans votre manifeste:

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

Vous pouvez également utiliser cette autre méthode, combinée à un AsyncTask ou d'un fil de fond:

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); 
    } 
} 

Ensuite, vous l'appelez partout où vous en avez besoin avec:

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

J'espère que ça aide :)

+0

merci margabro, j'ai utilisé votre première solution et maintenant j'ai une erreur qui dit "Changer le 2ème paramètre de la méthode" App "de" int "à" drawable " –

+0

et quand Je fais cela, je reçois une autre erreur qui dans ma classe Adpater.Java dans le code onBindViewHolder: holder.imageView.setImageResource (app.getDrawable()); –

+0

l'erreur dans catlog est: Erreur: (45, 58) erreur: types incompatibles: Drawable ne peut pas être converti en int –

0

Vous pouvez utiliser glisse aussi, Voici le code

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

dans votre code

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

Vous pouvez utiliser Glide ou Picasso. Mais je vous préfère Picasso pour cela parce Picasso réponses plus rapidement que Glide. Voici le code:

bibliothèque d'importation Picasso et il fonctionne comme un charme:

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

u peut utiliser ImageLoader son si mieux que picaso si u besoin obtenir une image du filet u besoin obtenir/mettre JSON u charge ne peux pas ou obtenir une image ou du texte ou quoi que ce soit sans JSON

+0

Je reçois une erreur ici: holder.imageView.setImageResource (app.getDrawable()); il dit "Erreur: (45, 58) erreur: types incompatibles: Drawable ne peut pas être converti en int" –