안드로이드 커스텀 리스트뷰에서 체크박스 스크롤 시 문제점 해결

2014. 1. 1. 11:44Programing/Android / Java

커스텀 리스트뷰에서 체크박스를 사용하다 보면,

스크롤 하는 경우 설정이 초기화가 되어 버리는 황당한 일을 경험하게 됩니다.

어떻게 해야 할지도 모르겠고, 짜증은 나고.


결론부터 말씀드리자면, 원인과 해결책은 정말 간단합니다.


커스텀 리스트뷰를 사용하는 경우 getView()라는 걸 하나씩 만들어서 사용하게 되는데요.

스크롤 하는 경우 getView()가 호출되게 되고, 이때 설정값이 초기화가 되는 것입니다.


이제 원인을 알았으니, 해결책을 말씀드리면,

getView()에 이전에 설정 된 값을 기억하고 있다가, 조건문을 달아서 처리해 주는 것입니다.


if(mContactListActivity.mIsSelected[position].equals("true"))

      mContactListInfo.setListSelect(true);

else

      mContactListInfo.setListSelect(false);


http://blog.naver.com/PostView.nhn?blogId=hyper1234&logNo=40199427486 의 자료를 인용해보면,

아래 처럼 Hash Value를 이용해서 해당 값을 가지고 있다가,

getView()가 불리는 시점에서 상태를 변경해 주는 걸 볼 수 있습니다.




각자 코딩하는 스타일이 다르니, 구현의 방법은 각자 생각해 보셔야 할 문제이고,

원인과 해결책만 안다면 쉽게 해결이 되지 않을까 싶습니다.