PullToRefresh的使用
来源:互联网 发布:知乎日语自学用书 编辑:程序博客网 时间:2024/06/05 01:03
/////在ListView的使用
导入library包,要改名;然后在依赖中关联他们;
< com.handmark.pulltorefresh.library.PullToRefreshListView xmlns:ptr="http://schemas.android.com/apk/res-auto" android:layout_height="match_parent" android:layout_width="match_parent" android:id="@+id/pull_lv" ptr:ptrDrawable="@drawable/default_ptr_flip" ptr:ptrAnimationStyle="flip" ptr:ptrHeaderBackground="#383838" ptr:ptrHeaderTextColor="#FFFFFF" >< /com.handmark.pulltorefresh.library.PullToRefreshListView>
//找控件
PullToRefreshListView pull_lv = = view.findViewById(R.id.pull_lv); //1.设置listView的适配器 getDataFromNet(); //2.设置刷新模式 /*设置pullToRefreshListView的刷新模式,BOTH代表支持上拉和下拉,PULL_FROM_END代表上拉,PULL_FROM_START代表下拉 */ pull_lv.setMode(PullToRefreshBase.Mode.BOTH); //3.通过getLoadingLayoutProxy 方法来指定上拉和下拉时显示的状态的区别(也就是设置向下拉的时候头部里面显示的文字) //此时这里设置的是下拉刷新的时候显示的文字,所以第一个设置true表示现在是刷新,第二个设置为false ILoadingLayout startLabels = pull_lv.getLoadingLayoutProxy(true, false); startLabels.setPullLabel("下拉刷新"); startLabels.setRefreshingLabel("正在刷新..."); startLabels.setReleaseLabel("放开刷新"); ILoadingLayout endLabels = pull_lv.getLoadingLayoutProxy(false, true); endLabels.setPullLabel("上拉刷新"); endLabels.setRefreshingLabel("正在载入..."); endLabels.setReleaseLabel("放开刷新..."); //4.设置监听事件
/**
* 如果Mode设置成Mode.BOTH,需要设置刷新Listener为OnRefreshListener2,并实现onPullDownToRefresh()、
* onPullUpToRefresh()两个方法。
如果Mode设置成Mode.PULL_FROM_START或Mode.PULL_FROM_END,需要设置刷新Listener为OnRefreshListener,
同时实现onRefresh()方法。
当然也可以设置为OnRefreshListener2,但是Mode.PULL_FROM_START的时候只调用onPullDownToRefresh()方法,
Mode.PULL_FROM_END的时候只调用onPullUpToRefresh()方法
*/
pull_lv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { //下拉刷新的时候调用的方法....请求第一页的数据,清空之前的数据,然后再添加设置适配器 @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { } //上拉刷新的时候调用的方法..page++,然后在请求数据 @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { } }); **//其他示例:主要是刷新方法不一样** private void getDataFromNet() { //第一个参数是接口,第二个上下文,第三个回调json数据 NetDataUtil.getData("http://gank.io/api/data/Android/10/"+page_num, getActivity(), new JsonCallBack() { @Override public void getJsonString(String json) { //解析 Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class); list = dataDataBean.getResults(); //往后面添加... list.addAll(dataDataBean.getResults()); //设置适配器 setAdapter(); **//停止刷新 pull_lv.onRefreshComplete();** } }); 其他都一样;;;
///在GridView的使用
//示例布局:
< com.handmark.pulltorefresh.library.PullToRefreshGridView xmlns:ptr="http://schemas.android.com/apk/res-auto" android:layout_height="match_parent" android:layout_width="match_parent" android:numColumns="2" android:id="@+id/refresh_grid_view" ptr:ptrDrawable="@drawable/default_ptr_flip" ptr:ptrAnimationStyle="flip" ptr:ptrHeaderBackground="#383838" ptr:ptrHeaderTextColor="#FFFFFF" >< /com.handmark.pulltorefresh.library.PullToRefreshGridView>
//如果在一个Fragment中:
public class FragmentGridView extends Fragment {private PullToRefreshGridView refreshGridView;private int page_num = 1;private List< DataDataBean.ResultsBean> list = new ArrayList< >();//记录当前展示的所有数据private ILoadingLayout startLabels;private GridViewAdapter gridViewAdapter;@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_gridview_layout, container, false); refreshGridView = view.findViewById(R.id.refresh_grid_view); return view;}@Overridepublic void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //1.默认的获取第一页的数据,然后设置适配器 getDataFromNet(); //2.设置可以刷新的模式 refreshGridView.setMode(PullToRefreshBase.Mode.BOTH); //3.设置刷新的时候展示的文字(状态) startLabels = refreshGridView.getLoadingLayoutProxy(true, false); startLabels.setPullLabel("下拉刷新"); startLabels.setRefreshingLabel("正在刷新..."); startLabels.setReleaseLabel("放开刷新"); ILoadingLayout endLabels = refreshGridView.getLoadingLayoutProxy(false, true); endLabels.setPullLabel("上拉刷新"); endLabels.setRefreshingLabel("正在载入..."); endLabels.setReleaseLabel("放开刷新..."); //4.设置下拉和上拉刷新的监听事件 refreshGridView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<GridView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<GridView> refreshView) { //下拉刷新....请求第一页的数据,清空之前的数据,然后再添加设置适配器 getRefreshData(); } @Override public void onPullUpToRefresh(PullToRefreshBase<GridView> refreshView) { //上拉刷新/加载...加载的时候页数++ page_num++; getDataFromNet(); } });}private void getRefreshData() { NetDataUtil.getData("http://gank.io/api/data/Android/10/1", getActivity(), new JsonCallBack() { @Override public void getJsonString(String json) { //解析 Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class); //先清空一下数据 list.clear(); //添加到集合的最前边,,,,(0,,,,) list.addAll(0, dataDataBean.getResults()); //设置适配器 setAdapter(); //设置适配器之后停止刷新的操作 refreshGridView.onRefreshComplete(); //可以设置刷新的时间.... startLabels.setLastUpdatedLabel("上次更新时间:" + new SimpleDateFormat("HH:mm").format(new Date(System.currentTimeMillis())));//last最近的,最后一次update修改/更新 } });}private void getDataFromNet() { //第一个参数是接口,第二个上下文,第三个回调json数据 NetDataUtil.getData("http://gank.io/api/data/Android/10/"+page_num, getActivity(), new JsonCallBack() { @Override public void getJsonString(String json) { //解析 Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class); //往后面添加... list.addAll(dataDataBean.getResults()); //设置适配器 setAdapter(); //停止刷新 refreshGridView.onRefreshComplete(); } });}/** * 设置适配器的方法 */private void setAdapter() { if (gridViewAdapter == null) { gridViewAdapter = new GridViewAdapter(getActivity(), list); refreshGridView.setAdapter(gridViewAdapter); } else { gridViewAdapter.notifyDataSetChanged(); }}}
//适配器中没有改变
阅读全文
0 0
- PullToRefresh的使用
- pulltorefresh的使用
- ActionBar-PullToRefresh的使用
- PullToRefresh的简单使用
- ActionBar-PullToRefresh的使用
- pulltorefresh的使用
- PullToRefresh的使用
- pullToRefresh的使用
- PullToRefresh的简单使用
- 使用 PullToRefresh 的总结
- PullToRefresh的使用
- Android-PullToRefresh的使用
- PullToRefresh的使用
- pulltorefresh的使用
- Android-PullToRefresh 库的使用
- android-pulltorefresh的使用浅析
- Android PullToRefresh的使用详解
- pulltorefresh框架的使用心得
- pnp估计相机的姿态
- 10月18日,德国法兰克福,阿里云MaxCompute2.0,全面布局AI人工智能
- mysql读写分离
- oracle 中检查点 及SCN的用法(白话解释)
- 数据库中的1和0在页面中显示进和出
- PullToRefresh的使用
- Photoshop详细教程六之蒙版处理大山晴天变彩虹的效果
- 大数据竞赛平台——Kaggle 入门篇
- photoshop常用功能
- Activiti工作流之项目中的使用
- mysql 权限管理
- URL路径映射
- DOS命令
- centos 安装vmware tools