리스트 뷰를 구현 중입니다

image 다운받을 경우 메모리 문제 때문에 오류가 발생해서 그부분을 해결하고자

 

http://givenjazz.tistory.com/48

 

의 내용을 참고하여 RecycleUtils 클래스를 사용 하여 가비지콜렉터가 메모리 환원 할 수 있도록 하는 부분을 적용중인데

 나중에 해제할 뷰를  배열에 WeakReference 를 사용 하여  추가하는 부분인데

 

원래 소스는

 

  1. ImageView i = new ImageView(mContext);
  2.         i.setImageResource(mOptionList.get(position));
  3.        
  4.         //메모리 해제할 View를 추가
  5.         mRecycleList.add(new <WeakReference<View>(i));

이미지 뷰를 생성하고 나중에 메모리에서 해제하기 위하여 배열에 이미지뷰를 저장하는 부분인데

 

제가 소스에 적용한 부분은

viewHolder.vGoodImage  = (ImageView) convertView.findViewById(R.id.img);

이미지 뷰를 뷰홀더로 생성하고 해제할 뷰를 추가 하는 부분 입니다
mRecycleList.add(new <WeakReference<View>(viewHolder.vGoodImage));

 

저는 계속 오류가 나는 군요

Multiple markers at this line
 - The method add(WeakReference<View>) in the type List<WeakReference<View>> is not applicable for the
  arguments (ImageView)
 - Syntax error on token(s), misplaced construct(s)

 

  
class GoodListAdapter extends BaseAdapter {
     Context maincon;
     LayoutInflater Inflater;
     ArrayList<GoodData> arrItems;
     int layout;
     private final ImageDownloader imageDownloader = new ImageDownloader();
    
     private List<WeakReference<View>> mRecycleList = new ArrayList<WeakReference<View>>();
   
      
     public GoodListAdapter(Context context, int alayout, ArrayList<GoodData> arItems) {
      maincon  = context;
      Inflater  = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      arrItems  = arItems;
      layout   = alayout;
     }
     public int getCount() {
      return arrItems.size();
     }
     public String getItem(int position) {
      return arrItems.get(position).goodName;
      
     }
     public long getItemId(int position) {
      return position;
     }
     // 각 항목의 뷰 생성
     public View getView(int position, View convertView, ViewGroup parent) {
      final int pos = position;
      String imageUrl = "";
      
      
      if (convertView == null) {
       Log.v("testLog", "getView");
       Log.v("testLog", "getView_goodImage:"+arrItems.get(position).goodImage);
       Log.v("testLog", "getView_goodName:"+arrItems.get(position).goodName);
       Log.v("testLog", "getView_position:"+pos);
       convertView  = Inflater.inflate(layout, parent, false);
       viewHolder   = new GoodViewHolder();
       
       viewHolder.vGoodImage  = (ImageView) convertView.findViewById(R.id.img);
       viewHolder.vGoodName  = (TextView) convertView.findViewById(R.id.text);
       //viewHolder.vOrderBtn  = (Button) convertView.findViewById(R.id.btn);
       
       
       convertView.setTag(viewHolder);
      } 
      else
      { Log.v("testLog", "convertView :"+(GoodViewHolder) convertView.getTag());
       viewHolder = (GoodViewHolder) convertView.getTag();
      }
      
      
      imageUrl = arrItems.get(position).goodImage;
      imageDownloader.download(Base64.encode(imageUrl.getBytes(), 0), viewHolder.vGoodImage);
            
      viewHolder.vGoodName.setText(arrItems.get(position).goodName);
     
      //아래부분에서 오류발생
      mRecycleList.add(new <WeakReference<View>(viewHolder.vGoodImage));
      /*
      viewHolder.vOrderBtn.setOnClickListener(new Button.OnClickListener(){
    public void onClick(View v) {
     String str = arrItems.get(pos).goodName + "를 주문합니다.";
     Toast.makeText(maincon, str, Toast.LENGTH_SHORT).show();
    }
   });;
   */  
      
      return convertView;
     }
     
     public ImageDownloader getImageDownloader()
     {
      return imageDownloader;
     }
  public void recycle() {
   for (WeakReference<View> ref : mRecycleList) {
    RecycleUtils.recursiveRecycle(ref.get());
    }
  }
    }이 게시물을