我的活动中有以下AsyncTask,用于更新填充ListView的ArrayAdapter。它似乎工作正常,因为我在onPostExecute中调用notifyDataSetChanged。
我的问题是,如果我使用onPostExecute在runOnUIThread中调用notifyDataSetChanged,它为什么只更新listview?
我认为onPostExecute在UIThread上运行,所以我需要将它包装在Runnable中吗?
@Override
protected void onPostExecute(LoginWebservice.TwoDimentionalArrayList<String> result) {
super.onPostExecute(result);
if (progressDialog != null) {
progressDialog.dismiss();
}
listView = (ListView) findViewById(R.id.rotalist);
arrayAdapter = new MySimpleArrayAdapter(GetRota.this, array);
listView.setAdapter(arrayAdapter);
listView.setOnItemClickListener(GetRota.this);
runOnUiThread(new Runnable() {
public void run() {
arrayAdapter.notifyDataSetChanged();
}
});
}
答案 0 :(得分:1)
您甚至不需要调用notifyDataSetChanged()
。您正在创建新适配器并将其设置为ListView
。之后您不做任何修改,因此无需调用该方法。这是多余的。