I have a separate thread running to get data from the internet. After that, I would like to update the ListView in the main thread by calling adapter.notifyDataSetChanged().
Or, post a message to the listview's message queue (which would execute on the UI thread):
list.post(new Runnable() { @Override public void run() { adapter.notifyDataSetChanged(); } });