web-dev-qa-db-ja.com

Android-終わりに達したときにさらにアイテムをロードするためのリストビュー

各行が作成したオブジェクトであるlistViewを正常に実装しました。いくつかのオブジェクトを読み取り、それらの配列を返すインターフェイスがあり、それをアダプターコンストラクターに渡します。私がやりたいのは、リストが非常に長い可能性があるため、私のインターフェースはさらにアイテム(ページ0、ページ1 ...)を読み取るたびに許可するため、ユーザーがリストの最後の行に到達したときに、次のページをロードして、listViewに挿入します。適切な方法は何ですか?私は実際に「リストの最後に到達する」コールバックをトリガーして、さらにページをリクエストしてリストにロードできるようにします。私の主な質問にビットOT、しかし、私はbaseAdapterを使用する気にしない、両方が機能するだろう、私はタスクのために何が良いかわからない。

20
buddy123

LoadViewという名前のボタンを持つフッターをlistViewに追加できます。ここに完全なチュートリアルがあります [さらに読み込む]ボタンのあるListView または、onscrolllistener()を実装して、このリスナーをListViewに追加できます

public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    this.currentFirstVisibleItem = firstVisibleItem;
    this.currentVisibleItemCount = visibleItemCount;
}

public void onScrollStateChanged(AbsListView view, int scrollState) {
    this.currentScrollState = scrollState;
    this.isScrollCompleted();
 }

private void isScrollCompleted() {
    if (this.currentVisibleItemCount > 0 && this.currentScrollState == SCROLL_STATE_IDLE) {
        /*** In this way I detect if there's been a scroll which has completed ***/
        /*** do the work for load more date! ***/
        if(!isLoading){
             isLoading = true;
             loadMoreData();
        }
    }
}

それが役立つことを願っています