Androidで、最後まで表示したら自動で項目追加

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です