を表示するアクティビティがありますListView
。を使用しAsyncTask
てサーバーからデータを取得し、それらをリストに入力します。
アクションバーをクリックすると、新しいアクティビティが開始されます( Dialog のようなスタイル) - ユーザーは「送信」をクリックしていくつかのデータを追加し、それらをサーバーに送信します。次に、このDialog-Activityが閉じ、リストを更新して新しいデータを追加したいときに前のものに戻ります。
メソッドで AsyncTask を実行しようとしましたonResume()
が、以前のデータと一緒に新しいデータを取得している間に、それらをすべて 2 回取得すると、onCreate() でも AsyncTask が実行されます。
1)アクティビティが初めて通過onStart, onCreate and onResume
するときでも、リストデータが2回表示されます。アクティビティが初めて開始されたときにそのコードを実行しないように、フラグのようなものを使用する必要がありますか?
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);
}
ありがとうございました