낮에 질문했던거에서 추가로 궁금한점이 있어서 질문드립니다.

 

일단 현재 상황은 ImageView와 TextView로 구성된 ListView가 있고, ListView를 클릭 시 클릭한 부분만 이미지가 변경됩니다.

 

그런데 문제는 변경은 되는데 클릭한 부분이 변경되는게 아니라 일정한 패턴으로 다른 부분의 이미지가 바뀝니다.

 

일단 소스입니다.

public View getView(int position, View convertView) {
      View v = convertView;
      
      if(v == null){
       LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
       v = vi.inflate(R.layout.list_item, null);
      }
      else{
       String i = list.get(position);
       
       if(i != null){           
        ImageView icon = (ImageView)v.findViewById(R.id.img);
 
        if(icon != null){
         switch(flag[position]){
         case 0 :
          Log.d("position","position" + position);
          Log.d("바뀌기 전 flag[position]","flag[position] :: " + flag[position]);
          icon.setImageResource(R.drawable.bg_check_off);
          flag[position] = 1;
          Log.d("바뀐 후 flag[position]","flag[position] :: " + flag[position]);
          break;
         case 1 :
          Log.d("position","position" + position);
          Log.d("바뀌기 전 flag[position]","flag[position] :: " + flag[position]);
          icon.setImageResource(R.drawable.bg_check_on);
          flag[position] = 0;
          Log.d("바뀐 후 flag[position]","flag[position] :: " + flag[position]);
          break;
         }
        }
       }         
      }
      return v;
     }

 

 

전역변수로 flag가 int배열로 있고 초기값 0으로 셋팅되어있습니다.

 

onItemClick에 위의 소스가 돌아가게 되도록 해놓았습니다. (밑의 소스)

 

listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
        public void onItemClick(AdapterView<?> list, View v, int position, long id){
         getView(position, v);
        }

 

로그를 찍어보면 클릭된 부분의 position값과 체크가 되었는지 안되었는지는 잘 찍힙니다.

 

그러나 이미지가 엉뚱한게 바뀌는게 도대체 어디가 잘못되어 그런건지 모르겠습니다. 알려주세요~