public class ExamProgressAdapter extends BaseAdapter {
 private Context mContext;
 private LayoutInflater mInflater;
 Vector<ExamQuestionData> listExamQuestionDatas;
 private int mLayout;
 PersonViewHolder viewHolder;

 public ExamProgressAdapter(Context _context, int layout,
   Vector<ExamQuestionData> _listExamQuestionDatas) {
  super();
  this.mContext = _context;
  this.mLayout = layout;
  this.listExamQuestionDatas = _listExamQuestionDatas;
  this.mInflater = (LayoutInflater) _context
    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  listExamQuestionDatas = _listExamQuestionDatas;
 }

 @Override
 public int getCount() {
  return listExamQuestionDatas.size();
 }

 @Override
 public Object getItem(int arg0) {
  return listExamQuestionDatas.get(arg0);
 }

 @Override
 public long getItemId(int arg0) {
  return arg0;
 }

 final OnClickListener myBtn1Listener = new OnClickListener() {
  @Override
  public void onClick(View v) {
   int position = (Integer) v.getTag();
   button1 = position;

    //포지션 넘어 오는 부분
  }
 };

 static class PersonViewHolder {
  TextView tvNumber;
  RadioButton tvUserAnswer1;
 }

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

  if (convertView == null) {
   // 캐시된 뷰가 없을 경우 새로 생성하고 뷰홀더를 생성한다
   convertView = mInflater.inflate(mLayout, parent, false);
   viewHolder = new PersonViewHolder();

   viewHolder.tvNumber = (TextView) convertView
     .findViewById(R.id_examprogress_item.tvNumber);

   viewHolder.tvUserAnswer1 = (RadioButton) convertView
     .findViewById(R.id_examprogress_item.tvUserAnswer1);

  

   viewHolder.tvUserAnswer1.setOnClickListener(myBtn1Listener);

   convertView.setTag(viewHolder);
  } // 캐시된 뷰가 있을 경우 저장된 뷰홀더를 사용한다
  else {
   viewHolder = (PersonViewHolder) convertView.getTag();
  }

  viewHolder.tvNumber.setText(""
    + listExamQuestionDatas.get(position).number);

  viewHolder.tvUserAnswer1.setTag(Integer.valueOf(position));

  return convertView;
 }
}

저렇게 구성을 했는데요 ㅠ tvNumber.settext는 문제 없이 되요.

하지만. tvUserAnswer1 (라디오버튼) 은 리스너에 포지션이 넘어왓는데 그포지션이 어떤 포지션인지 체크하는 방법을 모르겟네요

 

지금 문제는 클릭 리스너에 이미지를 변경해버리면 리스트 갯수가 100개이면 처음에 보이는 페이지가 5개라면 1번이 변경되고

6번이 다시 position이 초기화되면서 체크가 되버리고 11번이 체크되버리고 이런 중복 현상이 되어 버리네요

어떻게 해야 좋을까요? 도움을 주세요... ㅠㅠ

 

저 클릭리스너에서 포지션을 가지고 하면될거같은데 도저히 감이 안잡히네요..

 

첫번째 리스트에서 1번 버튼을 누르면 버튼이 체크되야하거든요 근대 쭉내리면 6번도 체크되고 11번도 체크되고

이렇게 중복으로 체크되버려요 ...