美文网首页
刷新数据与加载更多的细节

刷新数据与加载更多的细节

作者: 红烧排骨饭 | 来源:发表于2017-01-06 15:36 被阅读0次

刷新数据与加载更多的细节

当向服务器请求数据的时候,如果数据量很多,一般来说都会需要前端做分页请求。请求格式一般是需要带两个参数:页码、每页请求的个数

参数 类型 必填 参数含义/说明
page int 页码,默认 1
pagesize int 每页数据数量,默认 20

这里头有些细节需要注意

定义常量

我会把每页请求的个数设置成一个常量,这样每次请求的时候,都是请求固定个数的数据

/**
 * API常量
 */
public class ApiConstants {

    /**
     * 分页加载时,每一页的加载个数
     */
    public static final int PAGE_SIZE = 20;
}

刷新数据

刷新数据,只需要向请求第一页的数据就可以实现了

下面是一个请求菜单列表的例子

ApiWrapper.getMenuDataList(1, new RxSubscriber<BeanGetMenuDataList>() {

    @Override
    public void onError(ApiException e) {
        // 请求失败
        // 提示用户,显示一个错误提示视图
    }

    @Override
    public void onSuccess(BeanGetMenuDataList data) {
        if (data == null || data.getList().isEmpty()) {
            // 没有数据
            // 提示用户,显示一个空视图
        } else {
            // 服务器有返回数据
            // 调用 adapter.setDataSource() 方法,将数据设置到视图上
        }
    }
});

在软件开发中,有一个原则:无论发生了什么情况,都需要告知一下用户。所以,需要对一下几个场景做处理:

  • 请求失败
  • 请求成功,但是数据为空
  • 请求成功,同时有返回数据

加载更多

加载更多与刷新数据相比,多了一个页码的自增,这里头是有些小陷阱的

// 定义一个变量,记录一下前一次请求的页码
int mPage = 1;

ApiWrapper.getMenuDataList(++mPage /* 页码自增 */, new RxSubscriber<BeanGetMenuDataList>() {

    @Override
    public void onError(ApiException e) {
        --mPage; /* 页码复位 */
        // 请求失败
        // 提示用户,弹一个 Toast
    }

    @Override
    public void onSuccess(BeanGetMenuDataList data) {
        if (data == null || data.getList().isEmpty()) {
            // 没有数据
            // 提示用户,弹一个 Toast
            --mPage; /* 页码复位 */
        } else {
            // 服务器有返回数据
            // 调用 adapter.addDataSource() 方法,将数据设置到视图上
        }
    }
});

这里的陷阱是:如果请求数据成功,但是数据为空时,要将页码复位。否则下一次请求的数据的页码就乱了。

相关文章

  • 刷新数据与加载更多的细节

    刷新数据与加载更多的细节 当向服务器请求数据的时候,如果数据量很多,一般来说都会需要前端做分页请求。请求格式一般是...

  • 上下拉刷新

    一.上拉刷新 1.为什么要做上拉刷新? 想要看一些旧的(更多)数据,就需要上拉刷新,加载更多数据 2.上拉刷新永远...

  • Flutter 实现上拉加载更多、下拉刷新

    参考:ListView下拉刷新与加载更多 文章目录 相关文章推荐 实现效果 实现分析下拉刷新上拉加载更多 源码 相...

  • Flutter 21: 图解 ListView 下拉刷新与上拉加

    小菜前段时间整理了两种 ListView 的异步加载数据时,下拉刷新与上滑加载更多的方式,每种方式都有自己的优势,...

  • React Native刷新加载更多

    react native的刷新加载更多,有多种方案 "加载更多" 需要点击 "加载更多" 根据手势向上滑动,自动显...

  • html 页面的优化处理(ajax)

    同步加载(刷新):每次刷新的是整个页面的数据 异步加载(刷新):每次刷新的是整个页面的部分数据 由于之前做公司内部...

  • day10-数据刷新02局部刷新

    数据刷新01全局刷新 reloadData - 全局刷新,屏幕能看见的cell的数据,全部再次加载. 局部刷新 :...

  • 微信小程序分页加载数据

    一般小程序做分页加载数据,会做一些下拉加载更多、然后上拉刷新的操作。数据放在一个for循环里去加载,数据源是一个数...

  • AJAX

    概述 在不刷新页面的情况下更新页面的数据。(布局更新) 应用场景: 实现页面上拉加载更多数据 列表数据无刷新分页 ...

  • IOS开发UI篇------下拉刷新动画

    大家在用软件时经常会要刷新某个界面,或者是加载更多的数据,随着用户体验的提升在下拉刷新或者上拉加载时都会显示一个动...

网友评论

      本文标题:刷新数据与加载更多的细节

      本文链接:https://www.haomeiwen.com/subject/yjfxbttx.html