我有一个显示ListView
. 我使用 anAsyncTask
从服务器获取数据并将它们填充到列表中。
当我点击操作栏时,一个新的活动开始(样式像一个对话框) - 用户添加一些数据点击“发送”并将它们发送到服务器。然后这个 Dialog-Activity 关闭,当我想刷新列表并添加新数据时,我返回到上一个。
试图在该onResume()
方法上运行 AsyncTask,但是当我得到新数据和以前的数据时,我得到了它们两次,因为 AsyncTask 也在 onCreate() 上运行。
1)即使是第一次活动,onStart, onCreate and onResume
所以我有两次显示列表数据。我应该使用标志之类的东西,以便 Activity 第一次启动时不应该运行该代码吗?
2)我想不出有什么办法notifyDataSetChanged
可以帮助我,因为我从服务器填充数据。我有一个自定义适配器扩展ArrayAdapter
.
代码
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
JSONSpotTask task = new JSONSpotTask(); //task
task.execute();
try {
task.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
list1 = (ListView) findViewById(R.id.listview1);
ta = new TipsAdapter(this, R.layout.row_list_item, results);
list1.setAdapter(ta);
}
@Override
protected void onResume() {
super.onResume();
JSONSpotTask task = new JSONSpotTask(); //task
task.execute();
try {
task.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
list1 = (ListView) findViewById(R.id.listview1);
ta = new TipsAdapter(this, R.layout.row_list_item, results);
list1.setAdapter(ta);
}
谢谢