使用AsyncTask中的新数据更新arrayAdapter

时间:2014-12-19 12:25:27

标签: android listview android-asynctask android-adapter

我的活动中有以下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();
        }
    });

}

1 个答案:

答案 0 :(得分:1)

您甚至不需要调用notifyDataSetChanged()。您正在创建新适配器并将其设置为ListView。之后您不做任何修改,因此无需调用该方法。这是多余的。