ResourceCursorAdapter가 채워진 ListView가 있습니다. loaders 메커니즘을 사용하여 목록 항목에 대해 ContentProvider를 쿼리합니다. 목록 항목에서 스 와이프 제스처를 감지하여 일부 동작을 수행합니다. 새 항목은 백그라운드 서비스에 의해 추가되므로 목록이 동적으로 변경 될 수 있습니다.Android에서 스 와이프 제스처 ListView items
스 와이프를 시작하고 데이터베이스 변경이 발생하는 경우를 제외하면 모든 것이 정상적으로 작동합니다 (새 행을 추가하는 백그라운드 서비스의 결과). 이 경우 제스처가 제대로 감지되지 않습니다. ACTION_CANCEL이 목록 항목보기로 전달되고 모든 보이는 항목에 대해 bindView가 실행되는 것으로 나타났습니다. bindView 메서드 내에서 일부 텍스트 만 설정합니다. 거기에는 리스너가 변경되지 않습니다.
배경 서비스로 새 항목을 추가하는 경우에도 제스처가 작동하도록하려면 어떻게해야합니까? 아마도 모션이 취소되는 것을 방지하는 방법이 있거나 데이터베이스 업데이트를 일시 중지하여 제스처를 방해하지 않을 수 있습니다.
로더를 사용하는 경우 LoaderCallbacks 구현의'onLoadFinished'에서 아마도'Adapter.swapCursor'를 사용하고 있습니다 ... 이것을 가정하면 ... 슬라이드하기 시작할 때 (일부 플래그를 추가 할 때) 이것을하지 마십시오. 어떤 대기열에 커서를 놓고 슬라이드를 마친 후'swapCursor'를 사용하십시오. – Selvin
모든 가정은 옳지 만이 해결책은 효과가 없습니다. 나는 당신이 묘사 한 것을 정확하게 시도했지만 오래된 데이터를 표시하는 대신 내 목록이 비어있게되었습니다. 일부 디버깅 후 CursorLoader가 이전 커서에서 close() 메서드를 호출한다는 것을 알았습니다. 따라서 더 이상 사용할 수 없습니다. 어쨌든 도와 주셔서 감사합니다. – Bartek