Androidで、最後まで表示したら自動で項目追加
Twitterとかでよくみる、一番下までみると
次のリストを読み込むのを実装
これは、大量にあるデータをすべて読み込まずに
リストの最後尾が表示されたら
逐次読み込むリストを作る
これには、OnScrollListenerを使い
最後まで読み込まれたか判定して、データを追加することでできる
項目の自動追加はJavaで行う
まずは、implementで使えるようにするので
extends OnScrollListener
を追加する
あとは、onCreate()へ処理を追加
mlistView = (ListView)findViewById(R.id.list); //読み込み中のフッター生成 mFooter = getLayoutInflater().inflate(R.layout.progres_item, null); //ListViewにフッター設定 mlistView.addFooter(mFooter); //スクロールリスナー設定 mlistView.setOnScrollListener(this); @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount){ //末尾の場合、次のアイテム読み込み if(totalItemCount == firstVisibleItem + visibleItemCount){ additionalReading(); } } @Override public void onScrollStateChanged(AbsListView arg0, int arg1){ } private void additionalReading(){ //すでに読み込み済みならスキップ if(mTask != null && mTask.getStatus() == AsyncTask.Status.RUNNING){ return; } /*通常はネットワークやファイルからデータが読み込まれるため非同期に読み込み処理を実装する 今回は、サンプルなので非同期処理はそのままで データ読み込みを意図的に遅延処理にしている mTask = new AsyncTask(this).execute(test); }
最後までスクロールしたときの判定基準は
firstVisibleItemと
visibleItemCountを足した値が
totalItemCountになったときに
ListViewの最後に到達したと判断し
追加の呼び出し処理をしている