제가 웹에서 이미지를 받아와서 리스트에 보여주는 건데.....

 

스크롤에 보이지 않을 때면 기본 이미지로 있다가 리스트에 보여지면 (getview 시작) 다시 이미지를 웹에서 받아옵니다...

 

그렇게 되니 잠시 내렸다 올렸다를 반복하면 화면에서 안보였다 보였다 할때마다 이미지를 계속 받아 오네요...

 

한번 받은 이미지는 다시 안받게 못하나요?

 

 

getView()

 

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
   // TODO Auto-generated method stub
   
   View v = convertView;
 
   if(v == null){
    LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);   
    v = vi.inflate(R.layout.data_list2, null);
   }
   
   TextView txtview = (TextView)v.findViewById(R.id.txt_data);
  
   txtview.setText(data_storage.getM_Name().get(position));
   ImageView imgview = (ImageView)v.findViewById(R.id.img);
   
   ImageLoad downloader = new ImageLoad(imgview);
   downloader.execute(ImageListgetURL("position);
    
   return v;
  }


 

 

 

AsyncTask..이미지 받아오는 곳....

 public class ImageLoad extends AsyncTask<String, Void, Bitmap> {
 private String url;
 private final WeakReference<ImageView> imageViewReference;
 
 public ImageLoad(ImageView imageview){
  imageViewReference = new WeakReference<ImageView>(imageview);
 }
 
 
 @Override
 protected Bitmap doInBackground(String... params) {
  // TODO Auto-generated method stub
  
  url = params[0];
  
  try {
   BufferedInputStream bis = new BufferedInputStream(new URL("url).openConnection().getInputStream());
   
   Thread.sleep(200);
   
   return BitmapFactory.decodeStream(bis);
  } catch (MalformedURLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   return null;
   
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   return null;
   
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   return null;
  }
 }
 @Override
 protected void onPreExecute() {
  // TODO Auto-generated method stub
  super.onPreExecute();
  
  if(imageViewReference != null){
   ImageView imageView = imageViewReference.get();
   
   if(imageView != null)
    
    //this image will be displayed before being completely loaded from server
    imageView.setImageResource(R.drawable.icon);
  }
  
 }
 @Override
 protected void onPostExecute(Bitmap result) {
  // TODO Auto-generated method stub
  super.onPostExecute(result);
  
  if(imageViewReference != null){
   ImageView imageView = imageViewReference.get();
   
   if(imageView != null)
    
    imageView.setImageBitmap(result);
  }
 }
}