본문 바로가기

Programming

Android - 리스트뷰 클릭시 색상 변경시 엉뚱한 곳 변하는 현상

ListView 사용 중에 선택한 줄을 표시하려고 setBackgroundColor() 함수를 사용하였다.


근데 선택한곳과 더불어 엉뚱한 곳의 row가 같이 색이 변하는 현상이 발생하였다.


정확한 원인은 모르겠으나, 검색 중 아래와 같은 해결방법 발견.


@Override

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

  if(convertView == null){

    convertView = m_inflater.inflate(m_nLayout, null);

  }

  ...

}


리스트뷰에 값을 표시할 때 보통 어댑터 클래스의 getView에 구현을 하는데, 

책이나 인터넷을 보니 위와 같은 코드를 사용하길래, 넣어두었는데,


위 코드에서 if 절을 제외하면 엉뚱한곳의 색깔이 변하는 현상이 사라졌다.

그니깐 무조건 convertView에 레이아웃을 inflate 하게끔 했다.