PullToRefresh 使用

参考   点击打开链接

xml布局:

    

    <com.handmark.pulltorefresh.library.PullToRefreshListView  
        xmlns:ptr="http://schemas.android.com/apk/res-auto"  
        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" >  
    </com.handmark.pulltorefresh.library.PullToRefreshListView>

在添加头部和尾部的时候使用listView添加  获取listView:

 listView=pullToListView.getRefreshableView();


设置下拉刷新:

<pre name="code" class="java"><span style="white-space:pre">	</span>pullToListView.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); // 显示最后更新的时间 refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label); // 模拟加载任务 new GetDataTask().execute(); } }); }
 异步加载类: 

    private class GetDataTask extends AsyncTask<Void, Void, String>  
    {  
  
        @Override  
        protected String doInBackground(Void... params)  
        {  
            try  
            {  
                Thread.sleep(2000); //模拟请求网络的过程,没有个时间差的话  onRefreshComplete()可能不会执行

            } catch (InterruptedException e)  
            {  
            }  
            return "" + (mItemCount++);  
        }  
  
        @Override  
        protected void onPostExecute(String result)  
        {  
            mListItems.add(result); //获取数据
            mAdapter.notifyDataSetChanged();  //更改界面
           
            mPullRefreshListView.onRefreshComplete();  //<strong>刷新完成后  一定要调用这个方法</strong>
        }  
    }  
  
} 

  下拉刷新和上拉加载(一般分页的时候使用):

<span style="white-space:pre">		</span>OnRefreshListener2<ListView> listener2=new OnRefreshListener2<ListView>() {

			@Override
			public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {//下拉刷新
				pageNo=1;//重新请求第一页的数据
				allList.clear();//清空数据
				getDate(pageNo);
			}

			@Override
			public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
				
				pageNo++;
				getDate(pageNo);			
				
			}

			@Override
			public boolean canRefresh() {//可能是允许刷新吧,不确定
				return true;
			}

		};
		pullToListView.setOnRefreshListener(listener2);

PullToRefreshListView的自定义属性:

   ptr:ptrMode    可选值为:disabled(禁用下拉刷新),

pullFromStart(仅支持下拉刷新),

pullFromEnd(仅支持上拉刷新),

both(二者都支持),

manualOnly(只允许手动触发)

ptr:ptrDrawable 加载的时候做动画的图片

ptr:ptrAnimationStyle       可选值为:flip(翻转动画),

 rotate(旋转动画)

ptrRefreshableViewBackground 设置整个mPullRefreshListView的背景色

ptrHeaderBackground 设置下拉Header或者上拉Footer的背景色

ptrHeaderTextColor 用于设置Header与Footer中文本的颜色

ptrHeaderSubTextColor 用于设置Header与Footer中上次刷新时间的颜色

ptrShowIndicator如果为true会在mPullRefreshListView中出现icon,右上角和右下角,挺有意思的。

ptrHeaderTextAppearance , ptrSubHeaderTextAppearance分别设置拉Header或者上拉Footer中字体的类型颜色等等。

ptrRotateDrawableWhilePulling当动画设置为rotate时,下拉是是否旋转。

ptrScrollingWhileRefreshingEnabled刷新的时候,是否允许ListView或GridView滚动。觉得为true比较好。

ptrListViewExtrasEnabled 决定了Header,Footer以何种方式加入mPullRefreshListView,true为headView方式加入,就是滚动时刷新头部会一起滚动。



mPullRefreshListView.getLoadingLayoutProxy(true, false);接收两个参数,为true,false返回设置下拉的ILoadingLayout;为false,true返回设置上拉的。

private void initIndicator()  
    {  
        ILoadingLayout startLabels = mPullRefreshListView.getLoadingLayoutProxy(true, false);  //下拉
        startLabels.setPullLabel("你可劲拉,下拉...");// 刚下拉时,显示的提示  
        startLabels.setRefreshingLabel("好嘞,正在刷新...");// 刷新时  
        startLabels.setReleaseLabel("你敢放,我就敢刷新...");// 下来达到一定距离时,显示的提示  
  
        ILoadingLayout endLabels = mPullRefreshListView.getLoadingLayoutProxy( false, true);  //上拉
        endLabels.setPullLabel("你可劲拉,上拉...");// 刚上拉时,显示的提示  
        endLabels.setRefreshingLabel("好嘞,正在加载...");// 加载时  
        endLabels.setReleaseLabel("你敢放,我就敢加载...");// 上拉达到一定距离时,显示的提示  
    } 
   


         源码下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值