스크롤 할 때 체크박스가 풀리네요. 어디가 잘못된 것 일까요?

밑에 소스 첨부해 봅니다. getview 부분입니다.


private boolean isCheck[] ; //체크할 position 저장 배열

/////////////////getView/////////////////
 public View getView(final int position, View convertView, ViewGroup parent) 
 {  
  View v = convertView;

  if(v == null) {
   int res=0;
   
   switch (mList.get(position).Type) {
   case Item.middle:
    res = R.layout.filter_list_item;
    break;
   }
     
   v = sLayoutInflater.inflate(res,parent,false);
   
  }
  final Item p = mList.get(position);

if (p != null) {
   TextView title = (TextView) v.findViewById(R.id.tv_title);
   CheckBox chk  = (CheckBox) v.findViewById(R.id.cb_box);
   try {
    title.setText(mList.get(position).getTitle());

 if (chk != null) {      
                  chk.setChecked(false);
                  
                  CheckBox cbox = (CheckBox)(v.findViewById(R.id.cb_box));
                  
                  cbox.setChecked(isCheck[position]); 
                  
                  cbox.setOnClickListener(new OnClickListener(){
                     public void onClick(View v) {
                      if (isCheck[position]) {
                       isCheck[position] = false;
                      } else {
                       isCheck[position] = true;
                      }
                     }
                     });
                  
                  chk.setChecked(isCheck[position]);
                  
                 }
     
   } catch (Exception e) {
    
   }
  }//p
 
  return v;
 }//getView