前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

ListViewの自動追加読み込み

ListViewで一覧を表示していて、最後の行が表示された時点で自動的に追加の読み込み処理を実行したい場合、
setOnScrollListenerを使うと比較的簡単に実現できる。

public class SampleActivity extends Activity implements OnItemClickListener, OnScrollListener
    boolean mLoading; //読み込み中フラグ
    boolean mLoadComplete; //全件読み込み完了
    int mTotalCount = 0; //取得済み件数

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sample_list);

        //リスナー設定
        mListView = (ListView) findViewById(R.id.sample_listview);
        mListView.setOnItemClickListener(this);
        mListView.setOnScrollListener(this);
    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
            int totalItemCount) {
        //ローディング中か、最後の行でなければ追加読み込みを実施
        if (!mLoadComplete && !mLoading && totalItemCount > 0
                && firstVisibleItem + visibleItemCount >= totalItemCount) {
            mLoading = true;

            //TODO ここに追加読み込み処理を記述
        }
    }
}