私は、サーバと通信するスレッドを作成するアクティビティを持っています。このスレッドは、数秒ごとにStringを受け取ります。私はこのリストを追加してListViewのアクティビティに表示したいが、それをしようとするとCalledFromWrongThreadExceptionが出る。間違ったスレッド例外からの呼び出し
class MyActivity() extends AppCompatActivity {
ArrayList<String> list;
ArrayAdapter<String> adapter;
public MyActivity(){
...
setContentView(R.layout.main);
list = new ArrayList<>();
ListView myList = (ListView) findViewById(R.id.my_list);
adapter = new ArrayAdapter<>(this, R.layout.list_element, list);
myList.setAdapter(adapter);
Thread thread = new Thread(new Runnable(){
@Override
public void run(){
while(true){
String dataFromServer = networkManager.receiveData();
list.add(dataFromServer);
adapter.notifyDataSetChanged();
}
}
});
}
}
どうすればこの問題を解決できますか?
ワーカースレッド内のメイン(UI)スレッドを更新できません。あなたはasynckaskを使用して、asynctaskのUI onPostExecute()メソッドを更新できます – uguboz