06---数据的下拉刷新上拉加载更多实现

以我最近做的微格项目为例,谈谈关于数据的下拉刷新上拉加载更多实现

页面加载数据:

#pragma mark - 加载微博数据
- (void)loadStatusData
{
    _statusesFrame = [NSMutableArray array];
    // 微博管理 加载
    [StatusManage getStatusesWithSendSinceId:0 maxId:0 Success:^(NSArray *statues) {

        for (Status *s in statues) {
        StatusCellFrame *f = [[StatusCellFrame alloc] init];
            f.status = s;
        [_statusesFrame addObject:f];
        }
        [self.tableView reloadData];
    } failure:^(NSError *error) {
        NSLog(@"%@",error);
    }];
}

上拉刷新:

#pragma mark - 加载最新数据
- (void)loadNewData:(MJRefreshBaseView *)refreshView
{
    // 1.取出第一条微博数据的id
    StatusCellFrame *scf = [_statusesFrame firstObject];
    long long since = [[scf status] ID];
    // 2.获取在sence以后的微博数据
    [StatusManage getStatusesWithSendSinceId:since maxId:0 Success:^(NSArray *statues) {
        // 1》.获取最新微博数据的同时计算添加到对应的frame
        NSMutableArray *newStatusFrameArray = [[NSMutableArray alloc] init];
        for (Status *s in statues) {
            StatusCellFrame *f = [[StatusCellFrame alloc] init];
            f.status = s;
            [newStatusFrameArray addObject:f];
        }
        // 2》.将数组整体插入到第一条微博前面
       [ _statusesFrame insertObjects:newStatusFrameArray atIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, newStatusFrameArray.count)]];
        // 3》.刷新表格
        [self.tableView reloadData];
        // 4.让刷新控件停止刷新状态
        [refreshView endRefreshing];
        [self showNewStatusCount:newStatusFrameArray.count];

    } failure:^(NSError *error) {
        [refreshView endRefreshing];
    }];
}

下拉加载更多:

#pragma mark - 加载更多数据
- (void)loadMoreData:(MJRefreshBaseView *)refreshView
{
    // 1.最后1条微博的ID
    StatusCellFrame *f = [_statusesFrame lastObject];
    long long last = [f.status ID];

    // 2.获取微博数据
    [StatusManage getStatusesWithSendSinceId:0 maxId:last-1 Success:^(NSArray *statues) {
        // 1.在拿到最新微博数据的同时计算它的frame
        NSMutableArray *oldStatusFrameArray = [NSMutableArray array];
        for (Status *s in statues) {
            StatusCellFrame *f = [[StatusCellFrame alloc] init];
            f.status = s;
            [oldStatusFrameArray addObject:f];
        }
        // 2.将newFrames整体插入到旧数据的后面
        [_statusesFrame addObjectsFromArray:oldStatusFrameArray];
        // 3.刷新表格
        [self.tableView reloadData];

        // 4.让刷新控件停止刷新状态
        [refreshView endRefreshing];
        [self showNewStatusCount:oldStatusFrameArray.count];
    } failure:^(NSError *error) {
        [refreshView endRefreshing];
    }];
}

心得就是:

     下拉加载更多,所得数组可以直接添加到当前显示页面数组的最后一个对象后面,

// 2.将newFrames整体插入到旧数据的后面
        [_statusesFrame addObjectsFromArray:oldStatusFrameArray];

      上拉刷新,所得数组的整体必须插入在当前显示页面数组的第一个对象前面  因为新浪返回的数据是根据时间越短 id越大

      

// 2》.将数组整体插入到第一条微博前面
       [ _statusesFrame insertObjects:newStatusFrameArray atIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, newStatusFrameArray.count)]];

06---数据的下拉刷新上拉加载更多实现

时间: 2024-10-08 04:20:41

06---数据的下拉刷新上拉加载更多实现的相关文章

十分钟实现ListView下拉刷新上滑加载更多

说到ListView下拉刷新几乎每个APP都会用到,所以ListView下拉刷新是很重要的,就像ListView优化一样是你必会的东西. ListView实现下拉刷新如果我们开发人员自己编写相对来说比较费事的,当我们使用第三方库之后我们再来开发这个功能就会省事很多.相比与自己实现可以少编写不少代码,Android-PullToRefresh库可以轻松实现ListView的下拉刷新功能. 要使用Android—PullToRefesh库对ListView实现下拉刷新要经过以下几个步骤: 1.下载A

最新Android ListView 下拉刷新 上滑加载

开发项目过程中基本都会用到listView的下拉刷新和上滑加载更多,之前大家最常用的应该是pull to refresh或它的变种版吧,google官方在最新的android.support.v4包中增加了一个新类SwipeRefreshLayout,地址 这个类的作用就是提供官方的下拉刷新,并且效果相当不错,而上拉加载更多则用我们自定义的listview,也是相当简单. 下拉刷新 简单的介绍下: 首先它是一个viewgroup,但是它只允许有一个子控件,子控件能是任何view,使用的时候,所在

Android下拉刷新库,利用viewdraghelper实现,集成了下拉刷新,底部加载更多,数据初始加载显示loading等功能

项目Github地址:https://github.com/sddyljsx/pulltorefresh Android下拉刷新库,利用viewdraghelper实现. 集成了下拉刷新,底部加载更多,以及刚进入加载数据的loadview.包括了listview与gridview的改写. 效果1: 效果2: 效果3: 效果4: 效果5: 使用说明: imageList=(ListView)findViewById(R.id.image_list); imageAdapter=new ImageA

IOS学习之UiTableView下拉刷新与自动加载更多,百年不变的效果

IOS学习之UiTableView下拉刷新与自动加载更多,百年不变的效果(五) 五一劳动节马上来临,小伙伴有妹有很激动哟,首先祝天下所有的程序猿节日快乐!这个五一对于我来说有点不一样,我的人生从这个五一就转弯了,爱情长跑8年的我结婚了,一会支付宝账号我会公布出去,请自觉打款!谢谢合作. 灯光闪起来: 舞蹈跳起来: 歌曲唱起来: -------------------------------------------------------------------------------------

Android ListView 下拉刷新 点击加载更多

最近项目中用到了ListView的下拉刷新的功能,总结了一下前辈们的代码,单独抽取出来写了一个demo作为示例. 效果图 下拉刷新: 加载更多: CustomListView.java [java] view plaincopy package com.example.uitest.view; import java.util.Date; import com.example.uitest.R; import android.content.Context; import android.uti

支持下拉刷新和上划加载更多的自定义RecyclerView(仿XListView效果)

首先看效果 下拉刷新:        上划加载        在项目更新的过程中,遇到了一个将XListView换成recyclerView的需求,而且更换完之后大体效果不能变,但是对于下拉刷新这样的效果,谷歌给出的解决方案是把RecyclerView放在一个SwipeRefreshLayout中,但是这样其实是拉下一个小圆形控件实现的,和XListView的header效果不同.在网上找了很多的别人代码,都没有实现我想要的效果,于是自己动手写了一个. 具体实现的效果有以下几条 下拉刷新功能:

Android 下拉刷新上啦加载SmartRefreshLayout + RecyclerView

在弄android刷新的时候,可算是耗费了一番功夫,最后发觉有现成的控件,并且非常好用,这里记录一下. 原文是 https://blog.csdn.net/huangxin112/article/details/78781682 ,这里是看了之后,结合自己实际遇到的问题写的. 首先引入包. //下拉框 implementation 'com.android.support:recyclerview-v7:28.0.0-beta01' implementation 'com.scwang.smar

Android如何定制一个下拉刷新,上滑加载更多的容器

前言 下拉刷新和上滑加载更多,是一种比较常用的列表数据交互方式. android提供了原生的下拉刷新容器 SwipeRefreshLayout,可惜样式不能定制. 于是打算自己实现一个专用的.但是下拉刷新和上滑,非常考验对android布局与父子触摸机制的功底,因此参考gitHub上的一个热门的下拉刷新项目 之所以选择他是因为它一个类就完成了所有View的适配,非常的精简强力. 需求 咱对下拉刷新.上滑加载更多的控件,需求如下: 1:下拉刷新,拖动到一定距离,提示文字变成 放手刷新 2:刷新完成

Android 自定义 ListView 上下拉动“刷新最新”和“加载更多”歌曲列表

本文内容 环境 测试数据 项目结构 演示 参考资料 本文演示,上拉刷新最新的歌曲列表,和下拉加载更多的歌曲列表.所谓"刷新最新"和"加载更多"是指日期.演示代码太多,点击此处下载,自己调试一下. 下载 Demo 环境 Windows 2008 R2 64 位 Eclipse ADT V22.6.2,Android 4.4.3 SAMSUNG GT-I9008L,Android OS 2.2.2 测试数据 本演示的歌曲信息,共有 20 条,包括歌手名.歌曲名.时长.缩

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件/库 一提到移动端的下拉刷新上拉翻页,你可能就会想到iScroll插件,没错iScroll是一个高性能,资源占用少,无依赖,多平台的javascript滚动插件.iScroll不仅仅是 滚动.它可以处理任何需要与用户进行移动交互的元素.在你的项目中包含仅仅4kb大小的iScroll,你的项目便拥有了滚动,缩放,平移,无限滚动,视差滚动,旋转功能.iScroll的强大毋庸置疑,本人也非常欢迎大家使用iScr