功能全面超实用Android下(上)拉刷新库

下拉刷新、上拉加载更多几乎是每个app的必用功能,LightRefresh提供了上拉和下拉功能,主要亮点是自动回弹功能,还支持自定义界面,功能可谓强大。

可以不要刷新头(支持拉动回弹效果,类似于qq的下拉刷新,体验非常好)

支持常用的控件(RecyclerView、ListView、WebView、ScrollView等等).

支持自定义事件分发和冲突处理(将处理事件冲突的方法回调出来方便用户自己定义).

支持自定义下拉刷新头和加载更多头.

支持多指触控,不会让整个布局抖动,这是目前大部分下拉刷新库都没有注意到的.

支持自动刷新.

支持固定不回弹布局.

使用流程:关联库,有两种方法

1)、直接在AS当中关联

 
allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }   
dependencies {
            implementation 'com.github.BLCodes:LightRefresh:1.0.3-beta-4'
    }

2)、github下载库导入AS并关联

github地址:https://github.com/tangxianqiang/LightRefresh

这里以listView举例

首先,将自己的listview布局包裹在BounceLayout布局中,外面再套一个FramLayout布局

在类中实例化之后,设置bl_layout的头部和底部,到root中,并且设置listview关联bl_layout

上面的代码同时设置了视图滑动事件的处理,如果没有侧滑情况,一般返回true即可

此时头部和底部已经加载到了app视图中并能显示,只不过没有联网刷新

接下来,我们要用bl_layout设置界面的监听,当上拉和下拉的时候分别调用各自接口内的方法执行联网刷新数据

这里分别创建了分线程去执行联网操作,当下拉刷新的时候,我们定义了一个全局变量isRefresh初始值设为true,这是为了后面在一个联网方法中判断执行上拉还是刷新的数据请求

很显然下拉的时候我们将isRefresh设为true,然后再去请求联网,最后一定不要忘了bl_layout.setRefreshCompleted();方法,1000指的是刷新持续1秒弹回

在上拉加载更多中,首先设置isRefresh的值为false,然后根据上层数据拿到我们要请求页面的地址和服务器地址拼接保存后面联网用

在具体解析数据的方法中判断isRefresh的值,如果是true就正常刷新数据即可,反之我们将得到的数据取出来保存为集合,再将这个集合数据已addAll()方式全部添加到原有数据的集合newsData中

主义,这两个集合是同类型的,目前的请求通用一个Bean对象,上拉加载更多不需要再加载适配器了,调用陪你过adapter.notifyDaraSetChange()刷新适配器就会装填listview

特别注意的是,在listview加载更多后会出现光标定位回到之前item的情况,这里设置一个setSelection(newsData.size())使得每次刷新完毕都定位到最后一条

基本就这么多了,有问题可以与我联系

猜你喜欢

转载自www.cnblogs.com/wangxinjun/p/10542003.html
今日推荐