ionic 上拉刷新为啥自动触发
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ionic 上拉刷新为啥自动触发相关的知识,希望对你有一定的参考价值。
参考技术A 注意事项: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(booleanenable):是否允许下拉刷新setPullLoadEnable(booleanenable):是否允许上拉加载stopRefresh():停止刷新,重置headerviewstopLoadMore():停止加载,重置footerview请求到数据后停止刷新停止加载。setRefreshTime(Stringtime):设置上次刷新的时间onLoadMore():加载时调用的方法。注意第一次进入时不会调用此方法。onRefresh():下拉刷新时调用的方法。3、代码中怎么体现1)实现IXListViewListener接口->2)实现上拉刷新和下拉加载的数据变更->3)更新headerview和footerview,并设置更新时间。[java]viewplaincopy//1、实现IXListViewListener接口mListView.setXListViewListener(this);//2.1onRefresh中实现下拉刷新的数据加载@OverridepublicvoidonRefresh()//请求数据//更新界面显示[java]viewplaincopyonLoad();//2.2onLoadMore中实现上拉加载的数据加载[java]viewplaincopy@OverridepublicvoidonLoadMore()//请求数据//更新界面显示[java]viewplaincopyonLoad();//3、加载完数据后,复位headerview和footerview,并设置更新的时间。[java]viewplaincopyprivatevoidonLoad()mListView.stopRefresh();mListView.stopLoadMore();mListView.setRefreshTime("刚刚");4、xml注意事项当将XListView嵌入到LinearLayout中时,XListView占满全屏时不能再加载。上错误代码:[java]viewplaincopy5、去ScrollView共用这种情况,重写XListView会导致上拉加载时频繁的报错:适配器未更新,不知道咋解决。二、PullToRefresh大部分内容转自鸿洋的博客:这里写上拉加载的任务newGetDataTask().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]viewplaincopyILoadingLayoutstartLabels=mPullRefreshListView.getLoadingLayoutProxy();startLabels.setPullLabel("你可劲拉,拉");//刚下拉时,显示的提示startLabels.setRefreshingLabel("好嘞,正在刷新");//刷新时startLabels.setReleaseLabel("你敢放,我就敢刷新");//下来达到一定距离时,显示的提示默认是上拉和下拉的字同时改变的,如果希望单独改变呢:[java]viewplaincopyprivatevoidinitIndicator()ILoadingLayoutstartLabels=mPullRefreshListView.getLoadingLayoutProxy(true,false);startLabels.setPullLabel("你可劲拉,拉");//刚下拉时,显示的提示startLabels.setRefreshingLabel("好嘞,正在刷新");//刷新时startLabels.setReleaseLabel("你敢放,我就敢刷新");//下来达到一定距离时,显示的提示ILoadingLayoutendLabels=mPullRefreshListView.getLoadingLayoutProxy(false,true);endLabels.setPullLabel("你可劲拉,拉2");//刚下拉时,显示的提示endLabels.setRefreshingLabel("好嘞,正在刷新2");//刷新时endLabels.setReleaseLabel("你敢放,我就敢刷新2");//下来达到一定距离时,显示的提示ionic上拉加载组件 ion-infinite-scroll自动调用多次的问题
参考文章地址:http://www.cnblogs.com/luleixia/p/6402418.html
ionic 一个上拉刷新的组件 ion-infinite-scroll,如果页面未填充满页面高度,会自动检测并无限调用多次加载更多的函数;
当然,主要会导致首次调用的时候,会执行几次加载更多的函数;
解决方法:
在ion-infinite-scroll标签中,设置 immediate-check="false";
这个属性设置了: 是否在页面加载后立刻触发on-infinite的方法,
设为false后,则只有滚动到页面边缘时才会触发,即使页面加载出来已经到最底部,不滚动一下的话也是不会触发的
以上是关于ionic 上拉刷新为啥自动触发的主要内容,如果未能解决你的问题,请参考以下文章