android中listview的下拉刷新上拉加载是怎么实现的

如题所述

这是两个分开的部分。如果你是新手,先一个一个来。

我只能跟你说一下思路,具体的东西你在网上查查,不行再问我,新手的话慢慢来。

    下拉刷新,获取listview的下拉时间显示header,然后调用更新数据的接口就可以了。

    上啦加载,是分页获取数据,获取listview的是否拉到最底,如果拉倒最底,获取数据,让后list的数据添加获取的数据,更新adapter就可以了。


温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-03
下拉刷新本是ios上的效果,后来在android中也大量采用,但是我一直没有找到一个在性能和效果上都可以比肩ios的那种控件,有些控件效果不错但是滑动不流畅,有些很流畅但是效果突兀,比如oschina的客户端,后来看了看oschina的下拉刷新代码,觉得他这个可以自己修改一下,自己动手修改之后才发现,一个小小的下拉刷新,上拉加载其实有很多细节难以处理,直到现在我都还没有把oschina的控件改完美(我说的完美是美观、自然、流畅并且api简单,其实oschina的代码写的很乱),我的最终目的是要得到这样一个listview:
1.下拉的时候有一定的阻尼效果
oschina的下拉在这点上做的最差,轻轻一拉就跑了飞远。
2.手指不松开来回的下拉滑动速度不变,位移相同的情况下,和状态有关的图标与文字指示都是一一致的。
其中“位移相同的情况下,和状态有关的图标与文字指示都是一一致的”这一点很容易做到,但是“手指不松开来回的下拉滑动速度不变”这点不容易做到,因为一般来说下拉刷新的原理都是通过添加一个listview的headerview实现的,当headerview出现的时候,来回移动会跟listview本身的scroll滚动冲突,假如第一次下拉有阻尼效果,按住不松开,回到顶部,再次下拉的时候这个阻尼效果消失了(注意这个过程始终没有松开)。这是绝大多数下拉刷新控件都具有的问题。
3.listview头部提示部分的高度变化是渐进的,平滑的
很多下拉刷新控件在松开的时候一下子就跳到了刷新状态,当刷新完成一下子又跳到了没有头部的状态,这让人感觉非常不爽。
4.下拉刷新的api应该尽可能简单,使用起来最好和ListView本身差别不大,用户不需要非常小心就能完美实现。
oschina的下拉刷新控件中headerview 和 footerview的布局都需要用户自己去定义,使用起来很麻烦。
5.虽然实现了下拉刷新,但是这个功能不应该影响到listview本身的滑动性能。
记得又一个被大量使用的下拉刷新控件,忘了名字了,使用之后能明显感觉到listview的性能下降很多,但是因为UI做的好加上还有很多其他的花哨功能,被很多app采用。
虽然我多次提到oschina在下拉刷新的处理上的不足,但是他给我们提供了实现下拉刷新listview的基本原理:重写onTouchEvent 根据手势位移改变listview的headerview。
在oschina的listview的基础上我基本做到了1、3、4、5点但是第二点还做不到,也没想好解决办法。
但是在网上我找到一个解决了上述5点绝大多数问题的第三方控件,XListView
现在我都不知道是继续去修补那个oschina的控件还是直接采用XListView了。。。
百度一下,有很多的
第2个回答  2015-11-03
csdn里面的一篇经验,复制量太大,请谅解
(blog.csdn.net/shiguangbianjing/article/details/23658571)

android中listview的下拉刷新上拉加载是怎么实现的
下拉刷新,获取listview的下拉时间显示header,然后调用更新数据的接口就可以了。上啦加载,是分页获取数据,获取listview的是否拉到最底,如果拉倒最底,获取数据,让后list的数据添加获取的数据,更新adapter就可以了。

android中怎么实现上拉刷新
这篇文章主要介绍了android实现listview下拉刷新和上拉刷新效果,Android的ListView上拉下拉刷新,原理都一样,在Touch事件中操作header\/footer的paddingTop属性,需要的朋友可以参考下 public class PullToLoadListView extends ListView implements OnScrollListener { private static final String TAG = PullToLoad...

android上拉刷新下拉加载 通用框架怎么用
我们把要显示内容的View放置在我们的一个容器中,如果你想实现一个用ListView显示数据的下拉刷新,你需要创建一个ListView旋转到我的容器中。我们处理这个容器的事件(down, move, up),如果向下拉,则把整个布局向下滑动,从而把header显示出来。【3】Footer Footer可以用来显示向上拉的箭头,自动加载更多...

android 下拉滚动页面怎么实现
然后对 ListView的touch事件进行监听,如果当前ListView已经滚动到顶部并且手指还在向下拉的话,那就将下拉头显示出来,松手后进行刷新操 作,并将下拉头隐藏。原理示意图如下: 那我们现在就来动手实现一下,新建一个项目起名叫PullToRefreshTest,先在项目中定义一个下拉头的布局文件pull_to_refresh\/apk\/res\/android" xmln...

Android 怎么实现支持所有View的通用的下拉刷新控件
下拉刷新对于一个app来说是必不可少的一个功能,在早期大多数使用的是chrisbanes的PullToRefresh,或是修改自该框架的其他库。而到现在已经有了更多的选择,github上还是有很多体验不错的下拉刷新。而下拉刷新主要有两种实现方式:1. 在ListView中添加header和footer,监听ListView的滑动事件,动态设置header...

如何自定义下拉刷新的listview
]2 . 用ListView的addHeaderView方法,为ListView设置一个headView作为下拉刷新的view ,通过设置headView的topPadding来显示和隐藏headView , topPadding = - headHeight的时候,headView隐藏,topPadding = 0 时 ,头部恰好完全出现 。这篇博客就是用这种思路实现的 ...

listview怎么加下拉刷新
1、先写一个异步获取数据类,作为ListView的数据源。这个类一般继承AsyncTask实现。2、ListView使用adapter模式填充数据,所以要写一个继承于BaseAdapter的类,看你ListView中Item的展现形式选择继承于那种Adapter,具体参看api.

Flutter:手把手教你使用滚动型列表组件:ListView
在Flutter中,ListView结合RefreshIndicator组件实现下拉刷新 通过包裹一层RefreshIndicator,自定义onRefresh回调方法实现 方式有两种:通过ListView.controller属性可以判断ListView是否滑动到了底部,再进行上拉加载 NotificationListener是一个Widget,可监听子Widget发出的Notification ListView在滑动时中会发出Scroll...

android pulltorefresh是怎么触发下拉刷新的
1、在布局文件中添加PullToRefresh控件,比如PullToRefreshListView;2、在Activity中,设置监听器OnRefreshListener以响应用户下拉操作;3、在监听器的onRefresh()方法中执行数据刷新操作,可以通过AsyncTask来实现;4、在AsyncTask中获取到数据后,记得调用onRefreshComplete()方法通知PullToRefresh控件数据已获取...

如何样给ListView控件的Items填加下拉框
一、XListView1、下载gitHub的地址。或者从这儿下。2、用法导入图中的me.maxwin.view包提供了两个接口:IXListViewListener:触发下拉刷新,上拉加载。实现此接口时,onLoadMore()用来上拉加载,onRefresh()用来下拉刷新。OnXScrollListener:和原生的OnScrollListener一样,但是在header\/footer回滚时也会...

相似回答