마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

검색 키를 연이어 누르면 에러가 납니다.

0 추천

 java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(2131296909, class android.widget.ListView) with Adapter(class com.kangdongkyou.kalsp.SetSS$OAdapter)]
 

아마도 어뎁터가 자료를 다 뿌리기 전에 또 검색키를 눌러서 나는 에러 같은데요,

에뎁터가 작업을 완료한걸 어떻게 인식 하나요?

 

검색키 클릭 {검색키 사용중지}

Adaptor

if(index == key.size() -1) {검색키 사용}

 

이건 안먹히는것 같습니다.

어뎁터가 순차적으로 자료를 처리하지 않기 때문에 아마 의미없는 문장인것 같습니다.

새벽을미는 (1,500 포인트) 님이 2013년 6월 11일 질문

1개의 답변

+1 추천
 
채택된 답변
저 같은 경우는 web에서 자료를 받아서 adapter로 구현하는 작업을 수행하면서 썼는데요..

간단하게 말씀드리면 전 asycTask로 구현하여서 execute에서 dialog를 구현하여 실행하고 doInBackGround에서

원하시는 작업을 수행합니다. 그 다음에 onPostExecute에서 dialog를 dismiss 해주는거죠..

단, dialog도 cancelate를 false로 지정주셔야합니다. 로직을 복잡하시면 코드가 지저분해질수있습니다.

ui관련작업은 doInBackGround에서 작업하시면 에러납니다.^   ^* 이렇게 로직적으로보다 사용자가 사용을 못하게

layout적으로 막는 편이 편하고 훨씬깔끔하게 처리됩니다. 도움이 되시길 바랍니다.
안드로메다개발자 (8,830 포인트) 님이 2013년 6월 11일 답변
새벽을미는님이 2013년 6월 11일 채택됨
답변 감사합나다.
그런데 초보라 레이아웃으로 막는다는 말씀이 이해가 잘 않됩니다.
위에 설명해 주신 부분은 제가 구현하기는 힘들것 같고 레이아웃으로 구현하고 싶습니다.
조언 부탁 드립니다.
asyncTask 사용법을 아시면, dialog를 사용하여 사용자가 버튼을 못누르게 한다는 것이죠. 막는다는 표현이 좀 그랬나요? ㅋㅋㅋ 버튼을 못누르게 만들고 작업을 한다면 에러날 염려는 없겠죠 ? 무슨말씀이신지 아시겠나요 ? ^^*
...