天天看点

PullToRefresh的使用的详细用法,一个细节问题

pulltorefresh算是一个常用且强大的上拉刷新下拉加载库,我们今天来探讨一下它的细节

它的原理:在View中有一个scrollTo方法,可以将整个View移动到指定的位置,PullToRefresh就是重写了onTouchEvent方法来检测用户滑动的偏移距离,然后用滑动距离调用scrollTo方法来实现整个View的上下左右移动的。         

它的使用:

 <com.jmt.pullrefresh.PullToRefreshListView

            android:id="@+id/lvListView"

            android:layout_width="match_parent"

            android:layout_height="match_parent"

            android:divider="@color/backgroundcolor"

             android:listSelector="@android:color/transparent"  

            android:dividerHeight="1px"

            android:scrollbars="none"

            android:fadingEdge="none" >

        </com.jmt.pullrefresh.PullToRefreshListView>  

1、首先:设置他的mode,上拉下拉都可以

listView.setMode(Mode.BOTH);
		listView.setOnRefreshListener(new PullToRefreshListView.OnRefreshListener2<ListView>() {

			@Override
			public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
				pageIndex=1;
				//下拉刷新
				getData(1);
				
			}

			@Override
			public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
				//上拉加载
				pageIndex++;
				getData(2);
			}
		});
           

如果只下拉  

               //只下拉

listView.setMode(Mode.PULL_FROM_START);

//只上拉

listView.setMode(Mode.PULL_FROM_END);

item点击事件:

listView.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
				//这里是因为pulltorefrsh的header算一个item,所以自己用的时候 要-1
				int position=arg2-1;
				
			}
		});
           

最后:

//加载header或footer隐藏
 	             listView.onRefreshComplete();
 	         }
           

注意:list更新的时候最好用    adapter.notifyDataSetChanged();

还有一点:就是下拉刷新的时候 getData完成网络操作后,再去 data.clear(); data=新的数据 

如果在下拉刷新回调方法里面清楚数据则会只显示一条数据

public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView)