Android --ListView分頁

來源:互聯網
上載者:User

標籤:

參考部落格:Android ListView分頁載入(服務端+android端)Demo

監聽OnScrollListener事件

  class OnListScrollListener implements AbsListView.OnScrollListener{        @Override        public void onScrollStateChanged(AbsListView view, int scrollState) {            /**             * 當分頁操作is_divPage為true時、滑動停止時、且pageNo<=4(這裡因為服務端有4頁資料)時,載入更多資料             */            if (is_divPage && scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE && mPageNo <=4) {//                Toast.makeText(getActivity(), "正在擷取更多資料...",Toast.LENGTH_SHORT).show();                new MyTask().execute(EMP_PATH+mPageNo);            }else if (mPageNo >4) {                /**                 * 如果pageNo>4則表示,服務端沒有更多的資料可供載入了。                 */                Toast.makeText(getActivity(), "沒有更多資料啦...", Toast.LENGTH_SHORT).show();            }        }        /**         * 當:第一個可見的item(firstVisibleItem)+可見的item的個數(visibleItemCount)=所有的item總數的時候,         * is_divPage變為TRUE,這個時候才會載入資料。         */        @Override        public void onScroll(AbsListView view, int firstVisibleItem,                             int visibleItemCount, int totalItemCount) {            is_divPage = (firstVisibleItem + visibleItemCount == totalItemCount);        }    }

後台線程請求資料

  /**     * MyTask繼承線程池AsyncTask用來網路資料請求、json解析、資料更新等操作。     */    class MyTask extends AsyncTask<String, Void, String> {        /**         * 資料請求前顯示dialog。         */        @Override        protected void onPreExecute() {            super.onPreExecute();            dialog.show();        }        /**         * 在doInBackground方法中,做一些諸如網路請求等耗時操作。         */        @Override        protected String doInBackground(String... params) {            //return RequestData();            getHistoryData();            return "1";        }        /**         * 在該方法中,主要進行一些資料的處理,更新。         */        @Override        protected void onPostExecute(String result) {            super.onPostExecute(result);            if (result != null) {                // 如果擷取的result資料不為空白,那麼對其進行JSON解析。並顯示在手機螢幕上。                mdataList.addAll(mperDataList);                mdataAdapter.bindData(mdataList);                /**                 * 當pageNo等於1的時候才會setAdapter,以後不會再設定,直接notifyDataSetChanged,進行資料更新                 * ,這樣可避免每次載入更多資料的時候,都會重新回到第一頁。                 *///                if (mPageNo == 1) {//                    mListView.setAdapter(mdataAdapter);//                }                mdataAdapter.notifyDataSetChanged();                mPageNo++;            } else if (result == null) {                Toast.makeText(getActivity(), "請求資料失敗...", Toast.LENGTH_LONG)                        .show();            }            dialog.dismiss();        }    }

 

Android --ListView分頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.