PullToRefresh源码分析

1,功能介绍

PullToRefresh源码分析

  • 上拉刷新,下拉加载思想

PullToRefresh源码分析

 

 

2,导入过程

  • 导入地址

https://github.com/chrisbanes/Android-PullToRefresh

PullToRefresh源码分析

  • 创建一个新的工程,导入Moudel

 

PullToRefresh源码分析

PullToRefresh源码分析

PullToRefresh源码分析

 

3,我需要的Listview上拉刷新和下拉加载

  • 找到入口

PullToRefresh源码分析

  • 布局文件添加

<com.handmark.pulltorefresh.library.PullToRefreshListView

    android:id="@+id/pull_refresh_list"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:cacheColorHint="#00000000"

    android:divider="#19000000"

    android:dividerHeight="4dp"

    android:fadingEdge="none"

    android:fastScrollEnabled="false"

    android:footerDividersEnabled="false"

    android:headerDividersEnabled="false"

    android:smoothScrollbar="true" />
  • 找到控件

mPullRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);

PullToRefreshListActivity 里面找到下拉刷新的代码

  •  
// Set a listener to be invoked when the list should be refreshed.

mPullRefreshListView.setOnRefreshListener(new OnRefreshListener<ListView>() {

   @Override

   public void onRefresh(PullToRefreshBase<ListView> refreshView) {

      String label = DateUtils.formatDateTime(getApplicationContext(), System.currentTimeMillis(),

            DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL);





      // Update the LastUpdatedLabel

      refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);





      // Do work to refresh the list here.

      new GetDataTask().execute();

   }

});
  • 调用可以看到我们正在需要的上拉刷新,下拉加载

PullToRefresh源码分析

mPullRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {

   @Override

   public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {

      //下拉加载

   }





   @Override

   public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {

        //上拉刷新



   }

});
  •  刷新或者加载结束后需要调用方法

mPullRefreshListView.onRefreshComplete();