Android 上拉下拉刷新框架 PullUpToRefresh的使用
(下载地址:https://github.com/chrisbanes/Android-PullToRefresh)也可以去GitHub官网自己搜索
下载完成之后只解压文件,只需要当前文件夹下的library文件,如图 :
Android studio library导入流程如下图:
弹出对话框,如图:
选择完成之后点击next,finish接着如图:
点击Project Structure 弹出对话框如图:
点击Module dependency 弹出对话框如图:
点击OK等待完成,PullToRefresh刷新框架导入成功
PullToRefreshExpandableListView 控件的使用说明和流程:
PullToRefreshListView 的使用方法和ExpandableListView 一样,ExpandableListView 能用的属性方法,PullToRefreshExpandableListView 也能使用
第一步、和 ExpandableListView 一样,在Xml中添加:
<com.handmark.pulltorefresh.library.PullToRefreshExpandableListView android:id="@+id/exlistview" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="@null" android:scrollbars="none"/>
去掉右侧滑动的滚动条
android:scrollbars="none"
去掉每一条item之间的间隔线
android:divider="@null"
第二步、在Activity中添加:
//初始化PullToRefreshExpandableListView
PullToRefreshExpandableListView exlistview= (PullToRefreshExpandableListView) findViewById(R.id.exlistview);
为 exlistview 的父布局和子布局准备2个放数据的实体类(OrderListGroup 和 OrderListChild)和放实体类的集合(ArrayList<OrderListGroup> 和ArrayList<OrderListChild>),方便展示
private ArrayList<OrderListGroup> orderListGroups; private ArrayList<OrderListChild> orderListChilds; private OrderListGroup orderListGroup; private OrderListChild orderListChild;
现在开始添加数据
//初始化父布局实体类的集合orderListGroups = new ArrayList<>();for (int i = 0; i < 4; i++) { //初始化父布局放数据的实体类 orderListGroup = new OrderListGroup(); orderListGroup.setM_TMS_ORDER_ID("s20170407_" + i); orderListGroup.setCREAT_TIME("2017-02-12 21:15:56");
//初始化子布局实体类的集合orderListChilds = new ArrayList<>();
//初始化子布局放数据的实体类orderListChild = new OrderListChild();
//添加子布局数据orderListChild.setM_TMS_ORDER_QTY("125"); orderListChild.setWEIGHT("300"); orderListChild.setVOLUME("25"); orderListChild.setARRIVAL_TIME("2017-10-25 15:26:18");
//把子布局数据放入子布局集合orderListChilds.add(orderListChild); //把子布局集合当数据添加到父布局当中 orderListGroup.setOrderListChilds(orderListChilds);
//把父布局数据放入父布局集合orderListGroups.add(orderListGroup);} 添加完成之后父布局集合里面有一个子布局集合和2条属性
现在用Adapter适配器展示父布局里面的内容:
exlistview.getRefreshableView().setAdapter(new OrderAdapter(orderListGroups));展示效果:
效果展示出来,发现每个父布局上有个小箭头,看着不美观,怎么去掉呢?
//去掉左边默认的箭头 exlistview.getRefreshableView().setGroupIndicator(null);
内容已经展示出来了,怎么实现上拉下拉刷新呢?
首先设置 PullToRefreshListView 的刷新方式和刷新文字
1、刷新方式
listview.setMode(PullToRefreshBase.Mode.BOTH);//两端刷新
listview.setMode(PullToRefreshBase.Mode.PULL_FROM_START);//上拉刷新
listview.setMode(PullToRefreshBase.Mode.PULL_FROM_END);//下拉刷新
2、刷新文字
//上拉文字设置 ILoadingLayout upText = listview.getLoadingLayoutProxy(false, true); upText.setPullLabel("上拉加载"); upText.setRefreshingLabel("加载中"); upText.setReleaseLabel("释放加载"); //下拉文字设置 ILoadingLayout downText= listview.getLoadingLayoutProxy(true, false);
downText.setPullLabel("下拉刷新");
downText.setRefreshingLabel("正在刷新...");
downText.setReleaseLabel("松开刷新");
其次设置刷新监听方式(1、OnRefreshListener1 ;2、OnRefreshListener2)
第一种监听只有下拉刷新监听
第二种监听实现上拉下拉监听
现在只说第二种监听上拉下拉监听
exlistview.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
//处理刷新操作 Toast.makeText(MainActivity.this, "下拉刷新", Toast.LENGTH_SHORT).show();}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
//处理加载操作 Toast.makeText(MainActivity.this, "上拉加载", Toast.LENGTH_SHORT).show();}});
刷新操作之后记得关闭刷新动画
exlistview.onRefreshComplete();
PullToRefreshExpandableListView 刷新控件使用就这么多,另外补充两个展开和合拢父布局的监听方式:
/** * ExpandableListView的组展开监听 */ exlistview.getRefreshableView().setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() { @Override public void onGroupExpand(int groupPosition) { Toast.makeText(MainActivity.this, "第" + groupPosition + "组展开", Toast.LENGTH_SHORT).show(); } }); /** * ExpandableListView的组合拢监听 */ exlistview.getRefreshableView().setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() { @Override public void onGroupCollapse(int groupPosition) { Toast.makeText(MainActivity.this, "第" + groupPosition + "组合拢", Toast.LENGTH_SHORT).show(); } });
最后PullToRefreshExpandableListView 控件的Adapter适配器构建请看:http://blog.csdn.net/shiyangkai/article/details/72516690