2011-07-20 11 views
0

私は私のギャラリービューにURLから2つの画像があります。しかし、別のアクティビティに行くと、イメージはオンラインから再び読み込まれます。私はこれをアプリケーションインスタンスごとに1回要求したいと思います。この状態をどうやって保存するのですか?URLからギャラリー画像の状態を保存していますか?

/** Simple Constructor saving the 'parent' context. */ 
       public ImageAdapter(Context c) { this.myContext = c; } 

       /** Returns the amount of images we have defined. */ 
       public int getCount() { return this.myRemoteImages.length; } 

       /* Use the array-Positions as unique IDs */ 
       public Object getItem(int position) { return position; } 
       public long getItemId(int position) { return position; } 

       /** Returns a new ImageView to 
       * be displayed, depending on 
       * the position passed. */ 
       public View getView(int position, View convertView, ViewGroup parent) { 
       ImageView i = new ImageView(this.myContext); 

       try { 
           /* Open a new URL and get the InputStream to load data from it. */ 
           URL aURL = new URL(myRemoteImages[position]); 
           URLConnection conn = aURL.openConnection(); 
           conn.connect(); 
           InputStream is = conn.getInputStream(); 
           /* Buffered is always good for a performance plus. */ 
           BufferedInputStream bis = new BufferedInputStream(is); 
           /* Decode url-data to a bitmap. */ 
           Bitmap bm = BitmapFactory.decodeStream(bis); 
           bis.close(); 
           is.close(); 

           /* Apply the Bitmap to the ImageView that will be returned. */ 
           i.setImageBitmap(bm); 
         } catch (IOException e) { 

           Log.e("DEBUGTAG", "Remtoe Image Exception", e); 
         } 

       /* Image should be scaled as width/height are set. */ 
       i.setScaleType(ImageView.ScaleType.FIT_CENTER); 
       /* Set the Width/Height of the ImageView. */ 
       i.setLayoutParams(new Gallery.LayoutParams(150, 150)); 
       return i; 
       } 

       /** Returns the size (0.0f to 1.0f) of the views 
       * depending on the 'offset' to the center. */ 
       public float getScale(boolean focused, int offset) { 
       /* Formula: 1/(2^offset) */ 
       return Math.max(0, 1.0f/(float)Math.pow(2, Math.abs(offset))); 
       } 
       } 
      public class ImageAdapter2 extends BaseAdapter { 
       /** The parent context */ 
       private Context myContext;public ImageAdapter2() { 
        // TODO Auto-generated constructor stub 
       } 
       /** URL-Strings to some remote images. */ 

       private String[] myRemoteImages = {imageUrl2}; 






       /** Simple Constructor saving the 'parent' context. */ 
       public ImageAdapter2(Context c) { this.myContext = c; } 

       /** Returns the amount of images we have defined. */ 
       public int getCount() { return this.myRemoteImages.length; } 

       /* Use the array-Positions as unique IDs */ 
       public Object getItem(int position) { return position; } 
       public long getItemId(int position) { return position; } 

       /** Returns a new ImageView to 
       * be displayed, depending on 
       * the position passed. */ 
       public View getView(int position, View convertView, ViewGroup parent) { 
       ImageView i = new ImageView(this.myContext); 

       try { 
           /* Open a new URL and get the InputStream to load data from it. */ 
           URL aURL = new URL(myRemoteImages[position]); 
           URLConnection conn = aURL.openConnection(); 
           conn.connect(); 
           InputStream is = conn.getInputStream(); 
           /* Buffered is always good for a performance plus. */ 
           BufferedInputStream bis = new BufferedInputStream(is); 
           /* Decode url-data to a bitmap. */ 
           Bitmap bm = BitmapFactory.decodeStream(bis); 
           bis.close(); 
           is.close(); 

           /* Apply the Bitmap to the ImageView that will be returned. */ 
           i.setImageBitmap(bm); 
         } catch (IOException e) { 

           Log.e("DEBUGTAG", "Remtoe Image Exception", e); 
         } 

       /* Image should be scaled as width/height are set. */ 
       i.setScaleType(ImageView.ScaleType.FIT_CENTER); 
       /* Set the Width/Height of the ImageView. */ 
       i.setLayoutParams(new Gallery.LayoutParams(150, 150)); 
       return i; 
       } 

       /** Returns the size (0.0f to 1.0f) of the views 
       * depending on the 'offset' to the center. */ 
       public float getScale(boolean focused, int offset) { 
       /* Formula: 1/(2^offset) */ 
       return Math.max(0, 1.0f/(float)Math.pow(2, Math.abs(offset))); 




       } 
} 

答えて

0

あなたはstaticとして別々に画像を保存することもできますし、後で使用するために(キーは、値が画像ビットマップURLです)HashMapの中にそれらを置くことができたり、画像の遅延ダウンロードを行うことができますかついにあなたがアプリケーションを使用することができます(グローバルな状態を維持するにはhttp://developer.android.com/reference/android/app/Application.htmlを参照してください)、画像を保存するのは良いことではありません(一般的にメモリの問題が発生します)。

+0

これが表示されます。ありがとう。 – YogoTi

+0

私はこの例を見ました。http://stackoverflow.com/questions/541966/android-how-do-i-do-a-lazy-load-of-images-in-listview/3068012#3068012ギャラリー用のimageView? – YogoTi

+0

アダプタサブクラスを実装しましたか? – sunriser

関連する問題