2012-06-28 5 views
-1

AsyncTask : 백그라운드 스레드에서 가능한 모든 UI 작업을 제거했지만 5 회 또는 6 회 실행 한 후에도 이러한 종류의 예외가 여전히 있습니다. 도와주세요.AsyncTask : 백그라운드 스레드에서 수정되지 않았습니다.

java.lang.IllegalStateException : 어댑터의 내용이 변경 을 가지고 있지만 ListView에 알림을받지 못했습니다. 어댑터의 내용이 백그라운드 스레드에서 수정되지는 않지만 UI 스레드에서만 이어야합니다. [어댑터의 ListView (2131427449, 클래스 android.widget.ListView) ...에

+1

Google에서 도움을 받으려면 몇 가지 코드가 필요합니다. –

+0

일부 백그라운드 스레드 코드가 표시됩니다. – Ronnie

+0

최소 (작동하지 않음) 작동 예제 – sherif

답변

0

괜찮습니다. 진행 과정을 게시하는 동안 처리기 (예 : AsyncTask + Handler)를 사용하여 항목을 추가했습니다.

private void addAdapter(Item item) 
{ 
    Message message = addhandler.obtainMessage(); 
    message.what = 1; 
    message.obj = item; 
    addhandler.sendMessage(message); 
} 

private Handler addhandler = new Handler() { 
    public void handleMessage(Message msg) 
    { 
     switch (msg.what) { 
     case 1: 
      if (msg.obj != null) { 
       _adapter.add((Item) msg.obj); 
      } 
      break; 
     default: 
      break; 
     } 
    } 
}; 
1

시도는 UI 스레드에서 notifyDataChanged() 또는 requestLayout();를 호출합니다.

+0

requestLayout()? 그게 뭐야? – thecr0w

관련 문제