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の最後に到達したと判断し
追加の呼び出し処理をしている