2017-08-17 14 views
1

私はdrawablesフォルダから画像を取得するこのコードを持っています。私は画像形式のURLを取得する必要があります。私はPicassoを使ってそれをやり遂げることができたと思って、私はそれを試みました、そして、私はそれを釘付けできませんでした。はアンドロイドスタジオのリンクから画像を読み込むことができません

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

と、これは私のアダプタです:

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

とここで私はからの画像に必要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;} 
} 

をリンクのようなリンク:http://uupload.ir/files/aud7_brickone.jpg

私はそれが起こることができません!あなたはあまりにグライドを使用することができます

+0

drawableフォルダまたはリモートイメージからイメージを取得したいですか? – Rajesh

+0

リモート!しかし、私はそれを "int"に変換する必要があります –

答えて

1

URLから画像をダウンロードするためのさまざまな方法があります。下のfuncionを確認してください:

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

その後、単にあなたのImageViewに返さ描画可能を示しています。

マニフェストでインターネットのアクセス権を追加することを忘れないでください:

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

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

あなたはまた、AsyncTaskやバックグラウンドスレッドと組み合わせて、この他の方法を、使用することができますそれで、あなたはそれを必要とする場所で呼び出すことができます:

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

希望します。

+0

マカブロありがとう、私はあなたの最初のソリューションを使用して今私は "2番目のパラメータ"メソッド "アプリケーション"の "int"から "drawable"に変更しているエラーがあります –

+0

私は私のAdpater.JavaクラスonBindViewHolderコードで別のエラーが発生することを行う:holder.imageView.setImageResource(app。getDrawable()); –

+0

catlogのエラーは次のとおりです:エラー:(45、58)エラー:互換性のないタイプ:Drawableをintに変換できません –

0

、ここで はコード

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

はあなたのコードである

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

GlideまたはPicassoのいずれかを使用できます。しかし、PicassoGlideより速く応答するので、私はあなたのためにPicassoを好む。ここでは、コードです:

インポートPicassoライブラリは、それが魔法のように動作:

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

uはImageloaderそのuはuが得る必要があるネットから画像を取得する必要がある場合はピカソよりもとても良く/置くJSON Uカント負荷を使用することができますJSONなしでイメージやテキストなどを取得する

+0

ここでエラーが発生します:holder.imageView.setImageResource(app.getDrawable());それは "エラー:(45、58)エラー:互換性のない型:描画可能なintに変換することはできません" –

関連する問題