Não sei se você ainda está tendo esse problema, mas é o seguinte: a sugestão do Javanator não resolve. Você deve seguir o que a resposta aceita da questão diz. Ela diz que você deve adicionar um novo item aos dados que a ListView exibe (ou seja, adicionar uma mensagem à conversa) no UI THREAD e LOGO EM SEGUIDA chamar notifyDataSetChanged(). Fazer uma coisa em um thread e outra em outro como você está fazendo não resolve, as duas devem ser feitas no mesmo thread, que é o UI thread. Você até pode fazer coisas entre uma e outra desde que não seja nenhum código que mexa na ListView.
http://stackoverflow.com/questions/3132021/android-listview-illegalstateexception-the-content-of-the-adapter-has-changed/6357973#6357973
Vou seguir o conselho do Javanator, ele parece saber do que esta falando:"This is a MultiThreading Issue and Using Properly Synchronized Blocks This can be prevented. Without putting extra things on UI Thread and causing loss of responsiveness of app.I also faced the same. And as the most accepted answer suggests making change to adapter data from UI Thread can solve the issue. That will work but is a quick and easy solution but not the best one.
As you can see for a normal case. Updating data adapter from background thread and calling notifyDataSetChanged in UI thread works.
This illegalStateException arises when a ui thread is updating the view and another background thread changes the data again. That moment causes this issue.
So if you will synchronize all the code which is changing the adapter data and making notifydatasetchange call. This issue should be gone. As gone for me and i am still updating the data from background thread."
O problema é que eu não sei ao certo onde usar synchronized, nem sei se vai funcionar, nunca precisei usar esse modificador.--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
0 comentários:
Postar um comentário