またまた初歩的な質問ですみません。よくある「setOnScrollListenerでListViewのスクロール位置を検知してデータを取得する処理」なんですが、リストを上書きではなく追加していく方法がわからず、悩んでいます。
以下はListView版のソース(一部)です。
ActivityMain
// ページング用 private ListView list; private Integer page; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // スクロール検知対象 list = (ListView) findViewById(R.id.list); // 初期ページ取得 page = 1; connection(); // スクロール検知 list.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (firstVisibleItem + visibleItemCount + 3 == totalItemCount) { page ++; connection(); } } }); // データ取得(バックグラウンド通信) private void connection() { taskGet = new NetworkCommonGet(this); taskGet = new NetworkCommonGet(ActivityMain.this); taskGet.execute("http://*******/" + page); } }
これのバックグラウンド側(NetworkCommonGet)では、以下のようにdoInBackground~onPostExecuteでAsyncTaskの一般的な処理をしているだけなんですが、結果を上書きではなく追加する方法がわかりません。
NetworkCommonGet
@Override protected void onPostExecute(ArrayList result) { ListView list = (ListView) main.findViewById(R.id.list); ArrayAdapter<String> adapter = new ArrayAdapter<>( main, android.R.layout.simple_list_item_1, result); list.setAdapter(adapter); }
通信を使わず直接データを定義しているような場合には、adapter.add("〇〇〇")のような形で追加できるらしいのですが、通信を介した場合、つまりAsyncTaskでデータを取得する場合も同じようなことができないでしょうか。
すごくざっくりした質問で恐縮ですが、アドバイスいただけますと幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/18 08:56