怎么向xlistview中添加view实现上拉加载,下拉刷新
来源:互联网 发布:我国的政治体制知乎 编辑:程序博客网 时间:2024/06/10 20:14
注意事项:1、XListView因为添加了Header,会导致存储的数据+1,所以赋值时需要position-1。补充:当去掉HeaderView时,position不用-1。2、提个建议:上拉加载更多,最好在onCreate()中就执行setAdapter,然后不论是空数据、还是有数据,只用更新适配器就行了。一、XListView1、下载gitHub的地址。或者从这儿下。2、用法导入图中的me.maxwin.view包提供了两个接口:IXListViewListener:触发下拉刷新,上拉加载更多。实现此接口时,onLoadMore()用来上拉加载更多,onRefresh()用来下拉刷新。OnXScrollListener:和原生的OnScrollListener一样,但是在header/footer回滚时也会触发。几个常用方法:setPullRefreshEnable(boolean enable):是否允许下拉刷新setPullLoadEnable(boolean enable):是否允许上拉加载更多stopRefresh():停止刷新,重置header viewstopLoadMore():停止加载更多,重置footer view请求到数据后停止刷新停止加载更多。setRefreshTime(String time):设置上次刷新的时间onLoadMore():加载更多时调用的方法。注意第一次进入时不会调用此方法。onRefresh():下拉刷新时调用的方法。3、代码中怎么体现1)实现IXListViewListener接口->2)实现上拉刷新和下拉加载更多的数据变更->3)更新header view和footer view,并设置更新时间。[java] view plaincopy//1、实现IXListViewListener接口 mListView.setXListViewListener(this); //2.1 onRefresh中实现下拉刷新的数据加载 @Override public void onRefresh() { //请求数据 //更新界面显示[java] view plaincopyonLoad(); }//2.2 onLoadMore中实现上拉加载更多的数据加载[java] view plaincopy@Override public void onLoadMore() { //请求数据 //更新界面显示[java] view plaincopyonLoad(); }//3、加载完数据后,复位header view和footer view,并设置更新的时间。[java] view plaincopyprivate void onLoad() { mListView.stopRefresh();mListView.stopLoadMore(); mListView.setRefreshTime("刚刚"); } 4、xml注意事项当将XListView嵌入到LinearLayout中时,XListView占满全屏时不能再加载更多。上错误代码:[java] view plaincopy<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@id/takemain_ll" android:layout_below="@id/takemain_l" android:orientation="vertical" > <cn.bestbang.durable_consumer_goods.utils.MyExXListView android:id="@+id/home_list" android:layout_width="match_parent" android:layout_height="match_parent" > </cn.bestbang.durable_consumer_goods.utils.MyExXListView> </LinearLayout> 5、去ScrollView共用这种情况,重写XListView会导致上拉加载时频繁的报错:适配器未更新,不知道咋解决。二、PullToRefresh大部分内容转自鸿洋的博客:http://blog.csdn.net/lmj623565791/article/details/382387491、整体了解: 首先,github上的这个控件:pull-to-refresh,例子中的功能非常强大,可不止支持ListView和GridView。在下载前,先说下项目结构。github上下载的例子,是依赖于三个项目的,一个基本的library_pullToRefresh(自己要引用到的项目。怎么引用?自己的项目右键->Properties->Android,在Is Library中选择路径),一个基本的PullToRefreshViewPager,一个PullToRefreshListFragment。2、用法1)设置PullToRefreshListView支持上拉加载和下拉刷新->2)初始化控件,设置适配器->3)设置监听事件。在监听事件中处理上拉加载更多和下拉刷新,设置最后更新的时间。[java] view plaincopy<pre name="code" class="java"><pre name="code" class="java">//1、支持上拉加载和下拉刷新 mPullRefreshListView.setMode(Mode.BOTH);//2、设置适配器 mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mListItems); mPullRefreshListView.setAdapter(mAdapter); //3、设置监听器mPullRefreshListView.setOnRefreshListener(new OnRefreshListener2<ListView>(){ @Override public void onPullDownToRefresh( PullToRefreshBase<ListView> refreshView){ // 显示最后更新的时间 refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label); //这里写下拉刷新的任务 new GetDataTask().execute(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView){ // 显示最后更新的时间 refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);[java] view plaincopy//这里写上拉加载更多的任务 new GetDataTask().execute(); } });3、属性介绍1)ptr:ptrMode="both"支持上拉加载和下拉刷新。disabled禁用下拉刷新和上拉加载。pullFromEnd仅支持上拉加载。manualOnly只允许手动触发。当然通过代码也可设置:lv.setMode(Mode.BOTH);2)ptr:trAnimationStyle="flip" flip:翻转动画;rotate:旋转动画。3)ptr:ptrDrawable="@drawable/ic_launcher"设置图标4)ptrScrollingWhileRefreshingEnabled刷新的时候,是否允许ListView或GridView滚动。觉得为true比较好。5)ptrListViewExtrasEnabled 决定了Header,Footer以何种方式加入mPullRefreshListView,true为headView方式加入,就是滚动时刷新头部会一起滚动。4、自定义下拉指示器文本内容等效果: 在初始化完成PullToRefreshListView后,通过lv.getLoadingLayoutProxy()可得到一个ILoadingLayout对象,这个对象可设置各种指示器中的样式、文本等。[java] view plaincopyILoadingLayout startLabels = mPullRefreshListView .getLoadingLayoutProxy(); startLabels.setPullLabel("你可劲拉,拉...");// 刚下拉时,显示的提示 startLabels.setRefreshingLabel("好嘞,正在刷新...");// 刷新时 startLabels.setReleaseLabel("你敢放,我就敢刷新...");// 下来达到一定距离时,显示的提示 默认是上拉和下拉的字同时改变的,如果希望单独改变呢:[java] view plaincopyprivate void initIndicator(){ ILoadingLayout startLabels = mPullRefreshListView .getLoadingLayoutProxy(true, false); startLabels.setPullLabel("你可劲拉,拉...");// 刚下拉时,显示的提示 startLabels.setRefreshingLabel("好嘞,正在刷新...");// 刷新时 startLabels.setReleaseLabel("你敢放,我就敢刷新...");// 下来达到一定距离时,显示的提示 ILoadingLayout endLabels = mPullRefreshListView.getLoadingLayoutProxy( false, true); endLabels.setPullLabel("你可劲拉,拉2...");// 刚下拉时,显示的提示 endLabels.setRefreshingLabel("好嘞,正在刷新2...");// 刷新时 endLabels.setReleaseLabel("你敢放,我就敢刷新2...");// 下来达到一定距离时,显示的提示 }
0 0
- 怎么向xlistview中添加view实现上拉加载,下拉刷新
- XListView实现上拉刷新下拉加载
- xlistview实现上拉加载,下拉刷新
- MainActivity中Xlistview实现下拉刷新和上拉加载
- XListView实现下拉刷新和上拉加载
- 通过XListView实现上拉加载下拉刷新
- Xlistview实现上拉刷新下拉加载及item可单选
- XListView实现上拉加载下拉刷新,注意事项
- xListView(上拉刷新下拉加载,xml解析)中添加网络请求
- XlistView上拉刷新下拉加载
- xListView上拉刷新下拉加载
- xListView上拉加载下拉刷新
- XListView上拉加载,下拉刷新
- xlistview上拉加载下拉刷新
- XListView上拉加载下拉刷新
- XListView上拉刷新,下拉加载
- 上拉刷新--下拉加载XListView
- XListView上拉加载下拉刷新
- instancetype和id
- 转自程先的专栏:如果是初学C语言请看完 一些成功人士的心得
- Java HashMap遍历实践
- Eclipse快捷键大全
- web网站优化
- 怎么向xlistview中添加view实现上拉加载,下拉刷新
- JAVA设计模式之常见模式-单例模式
- Launcher2指定排序
- android之scrollview滑动和地图拖动冲突
- iOS makeKeyAndVisible
- 学习笔记——mac环境下svn命令
- Makefile经典教程(掌握这些足够)
- 1.java常用方法
- 调用支付宝接口,完成付款功能