2012-10-09 4 views
0

데이터베이스가 있고이를 목록 어댑터를 사용하여 listview에 채 웁니다. 목록보기에서 행을 삭제하면 다음 행의 ID가 변경되지 않습니다. 예를 들어, 1에서 8까지의 ID를 가진 행이 있고 7 번째 행을 삭제하면 새로운 행 ID는 1,2,3,4,5,6,8입니다. 그러나 데이터베이스에서 행 ID는 1,2,3,4,5,6,7입니다. ListView의 onclick 이벤트를 사용하여 데이터베이스에서 올바른 요소에 액세스 할 수 있도록이 두 요소를 어떻게 동기화 할 수 있습니까?목록 어댑터 및 커서의 행 ID 동기화 방법

+0

사용하는 어댑터? CursorAdaptor? BaseAdaptor로 사용자 정의 하시겠습니까? –

+0

EfficientAdapter를 사용하고 있습니다. – Khushboo

답변

0

제공되는 정보가 충분하지 않습니다. 목록보기에서 ID 7 행을 삭제하고 테이블에 7 번째와 8 번째 행이 모두 있습니다. 필요한 모든 정보를 가지고 있습니다. 정보를 삭제하면 데이터베이스 테이블 역시 ID가 7 인 행을 삭제합니다. 문제가 없는지 확인하십시오. 목록 항목 ID에 따라 테이블에서 행에 액세스 할 수 있습니다.

목록 항목 위치 및 목록 항목 id를 망칠 수 있습니다. 항목의 위치가 아닌 ID를 표시하십시오.

+0

네가 맞습니다. 목록 항목 위치에 대해 이야기하고있었습니다. 사실이 목록의 검색어를 검색하고 싶습니다. 검색 후 얻은 커서에서 cursor.getLong (cursor.getColumnIndexOrThrow (String ColumnID))을 사용합니다. 그러나 얻은 값이 내 데이터베이스의 해당 항목과 동기화되지 않습니다. 그리고 목록에서 항목을 삭제할 때마다 이런 일이 발생합니다. – Khushboo

+0

목록을 채우는 동안 테이블 행 ID에 따라 목록 항목 ID를 설정합니다. 목록 항목에서 실제 ID를 검색하고 ID가있는 행을 삭제할 수 있습니다. – Rasel

0

그냥있는 ListView를 업데이트하려면 다음을 호출

cursor.requery(); 
adapter.notifyDataSetChanged(); 
관련 문제