Android PullToRefreshListView上拉刷新和下拉刷新


  PullToRefreshListView實現上拉和下拉刷新有兩個步驟:

  1、設置刷新方式

     pullToRefreshView.setMode(PullToRefreshBase.Mode.BOTH);//兩端刷新
     pullToRefreshView.setMode(PullToRefreshBase.Mode.PULL_FROM_START);//上拉刷新
     pullToRefreshView.setMode(PullToRefreshBase.Mode.PULL_FROM_END);//下拉刷新

  2、如果是上拉刷新或者下拉刷新需要實現OnRefreshListener接口;如果是兩端刷新,setOnRefreshListener需要實現OnRefreshListener2接口

  兩端刷新實現:

pullToRefreshView = (PullToRefreshListView) view.findViewById(R.id.pull_to_refresh_listview);
        pullToRefreshView.setMode(PullToRefreshBase.Mode.BOTH);//兩端刷新
//        pullToRefreshView.setMode(PullToRefreshBase.Mode.PULL_FROM_START);//上拉刷新
//        pullToRefreshView.setMode(PullToRefreshBase.Mode.PULL_FROM_END);//下拉刷新
        pullToRefreshView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {

            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                refreshType = REFRESH_TYPE_DOWN;
                refreshView.getLoadingLayoutProxy().setRefreshingLabel("正在加載");
                refreshView.getLoadingLayoutProxy().setPullLabel("下拉加載更多");
                refreshView.getLoadingLayoutProxy().setReleaseLabel("釋放開始加載");
//                refreshView.getLoadingLayoutProxy().setLastUpdatedLabel("最后加載時間:");

                // Do work to refresh the list here.
                new GetDataTask().execute();
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                refreshType = REFRESH_TYPE_UP;
                refreshView.getLoadingLayoutProxy().setRefreshingLabel("正在加載");
                refreshView.getLoadingLayoutProxy().setPullLabel("上拉加載更多");
                refreshView.getLoadingLayoutProxy().setReleaseLabel("釋放開始加載");
//                refreshView.getLoadingLayoutProxy().setLastUpdatedLabel("最后加載時間:");
                // Do work to refresh the list here.
                new GetDataTask().execute();
            }
        });

  AsyncTask實現異步加載

private class GetDataTask extends AsyncTask<Void, Void, String[]> {
        @Override
        protected String[] doInBackground(Void... params) {
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return new String[0];
        }

        @Override
        protected void onPostExecute(String[] result) {
            // Call onRefreshComplete when the list has been refreshed.
            pullToRefreshView.onRefreshComplete();

            if(REFRESH_TYPE_DOWN == refreshType){
                Article article = new Article();
                article.setTitle("下拉刷新添加title");
                adapter.insert(article,0);//adapter是一個LinkedList
            }else if(REFRESH_TYPE_UP == refreshType){
                Article article = new Article();
                article.setTitle("上拉刷新添加title");
                adapter.add(article);
            }


            super.onPostExecute(result);
        }
    }

  如果想實現更豐富的效果可修改布局文件參數,如:

<!-- ptr:ptrDrawable="@drawable/default_ptr_flip" ptr:ptrAnimationStyle="flip" flip:翻轉 rotate:旋轉 -->
        <!-- ptr:ptrShowIndicator="true" 右上角 右下角出現箭頭-->
        <com.handmark.pulltorefresh.library.PullToRefreshListView
            android:id="@+id/pull_to_refresh_listview"
            android:layout_height="fill_parent"
            android:layout_width="fill_parent"
            ptr:ptrShowIndicator="true"
            android:background="#CCC" />


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM