2011-11-14 3 views
0

체크 박스가있는 항목의 ListView가 있습니다.안드로이드는 ListView에서 선택된 항목의 위치를 ​​유지합니다.

필드 값이 "1"이면 해당 뷰 메서드를 가져 오는 경우 확인란을 선택하는 사용자 지정 CursorAdapter가 있습니다.

목록보기에서 목록 항목을 클릭하면 확인란을 선택하고 필드를 "1"로 업데이트합니다. 내가 가진 문제는 내 사용자 지정 어댑터에서 changecursor 메서드를 호출하면 모든 항목을 다시로드하고 방금 클릭 한 항목 대신 첫 번째 항목을 가리키는 것입니다.

public void changeCursor(Cursor cursor) { 
    super.changeCursor(cursor); 
    init(cursor); 
    notifyDataSetChanged(); 
} 

위치하거나 첫 번째 항목으로 이동하지 않고 커서를 다시로드 할 수있는 해결 방법을 유지하는 방법이 있나요 : 다음 내가 가지고있는 changeCursor 방법에

?

답변

1

기본적으로 체크 된 항목을 추적하려면 일부 데이터 구조가 필요합니다. 사용자 지정 어댑터에서 부울 배열을 사용할 수 있습니다. 당신이 공유 환경 설정을 사용하여 목록보기에서 체크 박스 문제를 해결이 http://appfulcrum.com/?p=281 튜토리얼을 시도하신 경우에는 추가 정보를

은 체크 박스

으로이 링크 Custom listview with checkbox problem

목록보기를 참조하십시오.

감사합니다.

+0

괜찮습니다. 감사! – Maurice

+0

당신은 화장실입니다 ..... – bHaRaTh

+0

괜찮습니다. 여기에 그것이 의미가 있기를 바랍니다. getView를 사용하여 listview를로드 할 때 커서로부터 값을 얻는다는 의미로이 값을 사용하여 arrayList에 부울 값을 설정합니다. 그런 다음이 arraylist를 사용하여 확인란을 표시합니다. 문제 없습니다. 그가 체크 박스를 체크하면 문제가 시작됩니다. 데이터는 변경되지만 커서는 동일하게 유지됩니다. arrayList에서 위치의 값을 true로 설정했지만 getView가 호출되면 OLD 커서를 트리거하고 arraylist 부울 값을 false로 덮어 쓰는 이전 데이터를로드합니다. – Maurice

관련 문제