상황은 두가지의 레이아웃으로 리스트뷰를 구성하려고 합니다.

1번 레이아웃과 2번 레이아웃.

1번과 2번 레이아웃이 혼합된 상태이며, 갯수가 몇개 안되지만 스크롤을 넘어가는 상태입니다.

 

로그로 분석해보니. BaseAdapter를 상속받아 커스텀한 어뎁터(MyAdapter 라고 부를게요)의 getView 함수로 넘어오더군요. 화면에 뿌릴려면 넘어와야겠죠.

참고로 1번과 2번 레이아웃혼합된 형태로 8개의 항목이 있는데 순서는 1,2,2,2,1,2,2,2 입니다.

문제는 처음 로딩 끝나면 끝까지 읽는게 아니더군요. 즉, 화면에 표시되는게 1,2,2,2,1,2 까지 입니다.

getView 함수로 넘어오는게 딱 저기까지더군요. 1,2,2,2,1,2 여기 입니다.

여기까지는 문제 없이 잘 됩니다. convertView도 null로 넘어와서 제대로 만들구요.

 

그런데 스크롤을 넘겨서 남은 2,2의 항목을 뷰에 보여줘야 하는 순간.

getView가 불려지는데 convertView에는 값이 있는 상태로 넘어옵니다..

그것도 1에서 셋팅한 convertView가 말이죠. 2를 찍어야 하는 상황인데 말이죠. 그래서 널포인트 에러가 나더군요.

 

왜 이런거죠? 원래 대로 하면 1,2,2,2,1,2,2(여기서) convertView는 null이 넘어오는게 정상 아닌가 싶은데 말이죠.

 

아래는 이해를 돕기위한 간단한 소스입니다.

 

 

 

  public View getView(int position, View convertView, ViewGroup parent) {
//   final int pos = position;
   if ( convertView == null ) {
    switch (arSrc.get(position).type) {
    case 0:
     convertView = inflater.inflate(R.layout.bigpot_join_list1, parent, false);
     break;
    case 1:
     convertView = inflater.inflate(R.layout.bigpot_join_list2, parent, false);
     break;

    default:
     break;
    }
   }

 

   if (arSrc.get(position).type == 0) {
    ImageView img6 = (ImageView)convertView.findViewById(R.id.ImageView01);

    .......중략
   }
   else if (arSrc.get(position).type == 1) {
    ImageView img9 = (ImageView)convertView.findViewById(R.id.ImageView01);

    .......중략
   }

   return convertView;
}

 

흠...이해가 안가는 상황에 어떻게 풀어야 할지 난감한 상황이군요...

혹시 이런문제에 부딪히거나, 의심가는 부분이 있으면 댓글 부탁드립니다..