2011-10-10 4 views
3

SimpleCursorAdapter에 바인딩 된 ListView가 있으며 행을 삽입, 업데이트 또는 삭제하여 데이터베이스를 수정할 때 새로 고치기를 원합니다. cursor.notifyDataSetChanged는() 아무런 효과 (가 UI 스레드에서라고) 및 ListView.removeViewAt (int)를이 없습니다UnsupportedOperationException를가 발생합니다. Android에서 기본 동작을하려면 어떻게해야합니까?삽입, 편집, 삭제시 ListView 업데이트가 작동하지 않습니다.

데이터베이스가 올바르게 작동하고 작업을 다시 시작하면 수정 사항이 표시됩니다. 그러나 활동을 다시 시작하는 옵션이 여기 아니며, 그것은 해킹 및 원활한 전환을 보장 할 수 없기 때문에 ListView에 어댑터를 변경하면, 여기에 마지막 자원

부인 아주 기본적인 질문, 질문 시간의 수백만 0이라고 대답했다. , 당신이 당신의 코드에서 이런 짓을하지 않을 경우, 응답하지 않는 나의 요구하지 않으며, 신경 쓰지 마십시오 것은 또는 것을 시도하려고합니다. 당신이 API> = 11 CursorLoader을 사용하고이 작업을 수행하는 방법에서

답변

1

을 어떻게하는지 알고 있다면 당신은을 대상으로하는 경우이 사용할 수 있도록 만,이 또한 안드로이드 호환성 라이브러리에 포함되어 답변 이전 Android 버전. CursorLoader은 백그라운드 스레드에서 쿼리를 만들고 커서를 반환합니다. ContentProvider을 구현해야합니다. documentation을 읽으면 사용법을 알 수 있습니다. 기본적으로 로더를 초기화 한 다음 데이터가 변경되었다는 것을 알 때 다시 시작합니다. 콜백에서 어댑터의 커서를 바꾸기 만하면됩니다.

또는 에서 requery()을 사용할 수 있습니다. 어댑터가 자동으로 변경 사항을 통지 받게됩니다. 이 메소드는 현재 사용되지 않으며 권장되는 방법은 아닙니다.

+0

감사합니다. 이것은 매력처럼 작동합니다. – Raffaele

관련 문제