PullToRefreshGridView 带下拉刷新,上拉加载的GridView控件

下载地址:https://github.com/chrisbanes/Android-PullToRefresh 

下载解压后,导入解压包中的extras项目

xml:

<span style="font-size:18px;"><com.handmark.pulltorefresh.library.PullToRefreshGridView
            android:id="@+id/gvList"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:horizontalSpacing="5dp" 
             android:verticalSpacing="5dp"  
             android:layout_margin="5dp"
            android:numColumns="2" /></span>
注:高度一定要设置match_parent,否则高度不够,会渲染不出来,到时候自定义适配器中的getview()的position会一直为0

注:一定不能在xml中设置不可见。否则就算在Java中设置可见也显示不出来,可以在需要的地方Java设置不可见。

<pre name="code" class="java"><pre name="code" class="java"><span style="font-size:18px;">private PullToRefreshGridView  gvList;
private CommodityFiltrateGridViewAdapter mAdapter;
gvList = (PullToRefreshGridView ) findViewById(R.id.gvList);mAdapter = new CommodityFiltrateGridViewAdapter(this);</span>
 
 

protected void setGridView() {

 
          <span style="font-size:18px;">  initIndicator();
		gvList.setAdapter(mAdapter);
		gvList.setMode(Mode.BOTH);//能下拉刷新和上拉加载
		gvList.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				//在这里执行PullToRefreshGridView的点击item后要做的事
			}
		});
		gvList.setOnRefreshListener(new OnRefreshListener2<GridView>(){
			   @Override  
               public void onPullDownToRefresh( 
                       PullToRefreshBase<GridView> refreshView)  
               {  
//				   Log.e("TAG", "onPullDownToRefresh");//下拉刷新 
				   pageindex = 1;
				   getData_GridView(pageindex);//异步获取数据
               }  

               @Override  
               public void onPullUpToRefresh(PullToRefreshBase<GridView> refreshView)  
               {  
//                   Log.e("TAG", "onPullUpToRefresh"); // 上拉加载
                   pageindex++;
                   getData_GridView(pageindex);//异步获取数据

               }  
		});
	}
	private void initIndicator()  
    {  
        ILoadingLayout startLabels = gvList  
                .getLoadingLayoutProxy(true, false);  
        startLabels.setPullLabel("下拉刷新...");// 刚下拉时,显示的提示  
        startLabels.setRefreshingLabel("刷新中...");// 刷新时  
        startLabels.setReleaseLabel("松开刷新数据...");// 下来达到一定距离时,显示的提示  
  
        ILoadingLayout endLabels = gvList.getLoadingLayoutProxy(  
                false, true);  
        endLabels.setPullLabel("上拉加载...");// 刚下拉时,显示的提示  
        endLabels.setRefreshingLabel("加载中...");// 刷新时  
        endLabels.setReleaseLabel("松开加载数据...");// 下来达到一定距离时,显示的提示  
    } </span>
<span style="font-size:18px;">protected void getData_GridView(final int page) {
 //这里是使用异步加载数据操作
gvList.onRefreshComplete();//加载完成后,设置刷新完成!
}</span>

 
注:当上拉没有新数据时,执行:gvList.setMode(Mode.PULL_DOWN_TO_REFRESH); 表示只能下拉刷新 

注:列表滑动到指定位置:gvList.getRefreshableView().setSelection(count);

添加头部:
mPullUpToRefreshListView.getRefreshableView().addHeaderView(view);//view:头部view

滑到最新数据位置:
mPullUpToRefreshListView.setSelection(mAdapter.getCount()-1);

滑动到头部:
1、有addheadview()情况下:
ptrList.getRefreshableView().scrollTo(0, 0);
2、没有addheadview()情况下:
mPullUpToRefreshListView.setSelection(0);

注:pulluptorefresh相关控件想要执行像listview的操作,只需调用getRefreshableView()即可。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值