2011-07-11 6 views
2

ギャラリービューにダウンロードするイメージをロードしようとしています。現在、私はちょうど私が、私はエラーを取得いけない(私のアレイ内)の画像をダウンロードして、彼らはギャラリーにAndroidがダウンロード可能な描画可能ファイルをArraylist <Integer>

public View getView(int position, View convertView, ViewGroup parent) { 

     Drawable dr = null; 

     try { 
      dr = drawable_from_url(slImageLink[position],"jk");//String array of .jpg urls 

      Log.d("slImageLink[0]",slImageLink[position]); //this prints the url of the image I am downloading into logcat 
     } catch (MalformedURLException e) { 

      e.printStackTrace(); 
     } catch (IOException e) { 

      e.printStackTrace(); 
     } 


     ImageView imgView = new ImageView(cont); 
     imgView.setBackgroundDrawable(dr); 
     imgView.setLayoutParams(new Gallery.LayoutParams(80, 70)); 
     imgView.setScaleType(ImageView.ScaleType.FIT_XY); 
     imgView.setBackgroundResource(GalItemBg); 
     return imgView; 
    } 
} 

public Drawable drawable_from_url(String url, String src_name) throws java.net.MalformedURLException, java.io.IOException { 
    return android.graphics.drawable.Drawable.createFromStream(((java.io.InputStream)new java.net.URL(url).getContent()), src_name); 
} 

を表示するように、アダプタのgetViewメソッド()メソッドでimageviewsにそれらをロードしようとしています彼らは空白ですimageviewsに読み込む画像を取得することはありません、誰も助けてください?

+0

イメージをダウンロードしてアレイに追加するコードを投稿できますか? – DallaRosa

+0

こんにちは友人、その上に、drawable(dr)を返すpublic drawable – brux

答えて

1

getviewメソッドを呼び出す前に、すべての描画可能なものをダウンロードしてください。その後、getview()でarraylistからdrawable項目を割り当てます。 drawableをダウンロードするには、アダプタクラスに別のメソッドを作成します。

1

はこれを試してみてくださいしてください:D・ホープ私はあなたを助けることができる

public Drawable drawable_from_url(String url, String src_name) throws java.net.MalformedURLException, java.io.IOException { 
    URL url = new URL(url); 
    HttpURLConnection mConnection = (HttpURLConnection) url.openConnection(); 
    mConnection.setRequestMethod("GET"); 
    mConnection.setRequestProperty("Content-Language", "en-US"); 
    mConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
    mConnection.setUseCaches(false); 
    mConnection.setDoInput(true); 
    mConnection.setDoOutput(true); 

リターンDrawable.createFromStream(url.getInputStream()、src_nameを)。 }

//注意!!!! 。

  1. はHttpURLConnectionの

    ThreadPolicyはmThreadPolicy =新しいThreadPolicy.Builder()permitAllを()を使用する前にポリシーを設定することを忘れないでください(ビルド)。 StrictMode.setThreadPolicy(mThreadPolicy);

  2. とマニフェストファイル

    ASA」<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

しかし、通常、私はこの方法で使用しておりません。 HttpURLConnectionを使用して、Context.getCacheDir()に必要なすべてのイメージをキャッシュします。私はキャッシュディレクトリにダウンロードした後

Click Here for the API Document for getCacheDir

。私はそれを通常通り使用します。アプリケーションがアンロードされると、メモリは自動的に解放されます。D

関連する問題