2

내 앱에 문제가 있습니다. CursorAdapter와 함께 CursorLoader가 있습니다. ListView에 일부 항목이 있고 커서가 비어있는 커서에 대해 어댑터에서 커서를 바꿀 때 보이는 항목이 삭제되지 않습니다 (행 사이의 구분선 만 사라짐). ListView를 터치하면 즉시 사라집니다.마지막 항목이 삭제되면 ListView가 새로 고침되지 않습니다.

여기 상황이 있습니다. 당신은 단지 디바이더의 disappeard을 볼 수 있듯이 enter image description here

: enter image description here

가 그럼 난 결과가 없습니다 커서 교환 : 좀 비어 있지 않은 커서를 가지고있다. 화면을 터치하면 두 항목이 모두 사라집니다.

public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) 
{ 
    ratesAdapter.swapCursor(cursor); 
} 

조각 소스 : http://pastebin.com/N2YGzgRj

내가이 문제를 해결하기 위해 도와주세요

여기에 커서가 스왑 내 기능입니다.

+3

'delete()'다음에'adapter.notifyDataSetChanged();'를 시도 했습니까? –

+0

더 많은 코드를 볼 수 있습니까? notifyDataSetChanged()를 통해 어댑터의 데이터 세트를 통보합니까? –

+0

다음은이 조각의 전체 소스입니다. http://pastebin.com/N2YGzgRj – connexion20000

답변

2

문제를 조금 더 조사한 결과,이 문제는 Android 4.0.x에만 적용된다는 사실을 발견했습니다. 이 버그는 2.2, 2.3 또는 4.1, 4.0에만 존재하지 않습니다. 날이 버그를 해결하기위한 유일한 방법은) onLoadFinished (에 추가

getListView().setVisibility(View.GONE); 
getListView().setVisibility(View.VISIBLE); 

내가 우아한 방법을 찾을 수없는, BU 어쩌면 당신은 어떤 아이디어를 가지고 것입니다.

+0

실수로 실수로 다운 voted되었고 변경할 수 없습니다. * 한숨 * 죄송합니다 :/ –

+0

이것은 5.0의 버그입니다. 모든 항목을 제거한 후 ListView를 새로 고칠 수있는 모든 방법을 시도했습니다. 이것이 유일한 방법입니다. –

0

보통 notifyDataSetChanged();은 이러한 목록의 원인입니다. 새로 고치는 문제는 아닙니다. 귀하의 로딩 코드 이후에 그것을 포함시키려는 시도는 모두 제가 '더 많은 정보를 얻을 때까지'권할 수 있습니다.

+0

onLoadFinished()에서 notifyDataSetChanged()를 추가해도 도움이되지 않았습니다. 상황은 동일합니다. – connexion20000

+0

onLoadFinished가 전혀 호출되지 않았습니까? 메서드 내에 Log.d를 설정하십시오. – Darwind

+0

LogD를 onLoadFinised() 안에 설정했습니다. 함수가 제대로 호출됩니다. – connexion20000

관련 문제