처음에 작성한 코드에서는,
리스트뷰에 적용된 아이템이 여러개일 때, (스크롤이 생길 때) 체크해놓고 스크롤 올렸다 내렸다 하면
체크된 상태가 뒤죽박죽이 되어버렸습니다.
일정 갯수 이상으로는 자동으로 재사용하는 리스트뷰의 특성상 생긴 문제였습니다.
그래서 구글링을 하여,
클릭을 리스트뷰 어탭터에서 체크 상태를 다뤘던 것을,
리스트뷰에서 다루도록 하였습니다.
listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
또한 어댑터에는
h.check.setChecked(((ListView)vg).isItemChecked(pos));
mContext.runOnUiThread(new Runnable() {
public void run() {
notifyDataSetChanged();
}
});
h.check.setFocusable(false);
h.check.setClickable(false);
이렇게 코드를 작성해주었습니다.
그러나, 실시간으로 체크 된 상태가 적용되지 않습니다 ㅠㅠ
notifyDataSetChanged(); 코드를 이용하여 쓰레드 작업을 했음에도 변함이 없었습니다 ㅠㅠ
스크롤을 올렸다 내렸다 하면 업데이트가 되어 정상적으로 적용된 상태가 보입니다.
구글링을 엄청 많이 했는데, 이 작업을 지금 4시간 가까이 하고 있어서 집중력이 많이 떨어졌기도 하고
어디 물어 볼 곳도 없어서 질문글을 올리게 되었습니다 ㅠㅠ
아시는 분은 답변 부탁드려요!
* 참고 ) MainActivity에서
runOnUiThread(new Runnable() {
public void run() {
adapter.notifyDataSetChanged();
}
});
이렇게 어댑터에 notifyDataSetChanged();를 해도 안되고,
ListView에 onScroll 관련 메소드를 사용해서, 그 안에도 위의 코드를 적용했는데도 안됩니다 ㅠㅠ