位置: 编程技术 - 正文

Android入门---下拉刷新上拉加载更多策略的实现(android教程下载)

编辑:rootadmin

推荐整理分享Android入门---下拉刷新上拉加载更多策略的实现(android教程下载),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android入门视频教程,android_download,android入门视频教程,android入门教程,android入门教程,android入门下载,android入门下载,android入门下载,内容如对您有帮助,希望把文章链接给更多的朋友!

最近需要实现一个下拉刷新上拉加载更多的项目,目前已经实现,下面总结下实现过程中遇到的问题和相关解决;

首先理清思路:因为涉及到网络获取数据以及数据的缓存,所以看似简单的一个实现,加上这些后就变得稍微复杂点了,那就一步一步由浅入深的理解; 我将整体结构分成三个部分完成: 1.进入首页,先获取数据填充当前ListView(判断获取方式,需要缓存) 2.下拉刷新,获取最新数据(无需缓存,直接联网获取) 3.上拉加载更多,获取更多数据( 判断获取方式,需要缓存)

整体设计中我使用了两个时间标志位lastRefreshTime和LastLoadMoreTime,根据这两个标志位的值进行数据筛选加载,例如下拉刷新的时候,获取最新数据的判断条件就是其createdAtTime>lastRefreshTime 在获取到数据后,将数据第一项的createdAtTime赋值为lastRefreshTime,以此达到标志位的作用

下面开始详细理解:

第一部分 进入首页,获取数据填充当前ListViewAndroid入门---下拉刷新上拉加载更多策略的实现(android教程下载)

在获取数据之前,有个很重要的事情需要做:创建sharedPerferenced对象,用于存储lastRefreshTime和lastLoadMoreTime。 按照从数据库中加载数据的步骤,通过传给adapter一个数据集就能达到目的,但是这里存在通过网络获取数据的方法,所以就需要先进行判断,数据填充步骤如下:(默认数据排序按照createdAtTime降序排列) 1. 进入首页,查询数据库中是否存在数据 2. 如果数据库中存在数据,则给adapter适配数据库中的数据(取出数据中createdAtTime值最小的项,将其createdAtTime赋值给lastLoadMoreTime) 3. 如果数据库中没有数据,新建线程联网加载数据,加载完成后传递给adapter进行适配(取出数据中createdAtTime值最小的项,将其createdAtTime赋值给lastLoadMoreTime,将当前系统时间复制给lastRefreshTime) 以上,进入首页填充数据就完成了;

第二部分 下拉刷新,从网络获取最新数据

联网获取数据,关键点就是查询条件,我这里的查询条件是通过筛选数据的创建时间,数据结构中存在一个字段 createdAtTime,表示数据的创建时间,下面是详细步骤: 1. 用户进行下拉操作,新建线程联网进行查询操作,查询条件是createdAtTime>lastRefreshTime,按照createdAtTime降序排列 2. 如果查询返回结果为空,则表示没有更新,如果不为空,将数据传递给ListView进行数据更新,刷新操作完成 3. 将获取到的数据异步存入数据库中 以上,刷新操作完成,这个操作相对简单些,不用考虑缓存的事,直接从网络获取,然后展示并存入数据库中

第三部分 上拉加载更多,需要判断缓存有无

上拉加载更多的时候需要先判断数据库中是否存在比lastLoadMoreTime更早时候的数据,如果有就先获取缓存数据,没有则联网查询,以下是详细步骤: 1. 用户进行上拉操作,调用查询数据库的方法,查询条件是createdAtTime < lastLoadMoreTime按照createdAtTime降序排列,如果有查询结果,说明存在更多缓存,反之说明没有缓存,需要从网络加载; 2. 如果从数据库中查询到有结果,将结果传给adapter,并将数据集合中最后一项的createdAtTime值赋值给lastLoadMoreTime,这样来更新标志位 3. 如果从数据库中没有查询到结果,就新建线程联网查询,查询条件同样是createdAtTime < lastLoadMoreTime,按照createdAtTime降序排列,如果有返回结果,就将结果传给adapter展示,并将获取到的数据存入数据库,然后将数据集合中最后一项的createdAtTime值赋值给lastLoadMoreTime,这样来更新标志位,如果没有返回结果,就说明服务器上也没有更多数据了,提示用户“没有更多数据了”

整理以上三个步骤,会发现其实思路很简单,也就是借助两个时间标志位来进行条件筛选的,然后在获取数据的时候再判断有没有缓存,有则使用缓存,没有则联网获取

因为代码太长,且存在很多冗余和细节问题,这里就不贴出代码来了,毕竟第一次完成,这里将思路总结出来,个人觉得这不算是最好的思路,但是目前只能想到这种思路,待以后学习到新的方法,新的思路,再重新总结这个思路。

Android是如何在不同屏幕上适配图片的 -- 或控件大小 转载:

下拉列表框Spinner的使用 效果图:activity_main.xmlSpinnerandroid:id="@+id/spinner1"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentLeft="true"/MainActivity.java

Android系统启动过程全解析 原文地址:

标签: android教程下载

本文链接地址:https://www.jiuchutong.com/biancheng/385121.html 转载请保留说明!

上一篇:Dialog-普通对话框-列表对话框(普通话的对话)

下一篇:Android是如何在不同屏幕上适配图片的 -- 或控件大小(android如何使用)

  • 关税完税价格是指什么意思
  • 一般纳税人是什么型企业
  • 房地产中介门头
  • 政府补贴是否要交企业所得税
  • 弥补以前年度亏损后怎么交所得税
  • 购买生产原料分录
  • 发票号码代码不合法
  • 合伙企业季度所得税预缴不用纳税调整是吗
  • 政府补贴什么时候确认收入
  • 增值税进项税转出文件
  • 劳务成本科目
  • 关税的记税依据
  • 发现以前年度少计提税金
  • 未收到增值税专用发票
  • 进口环节关税税率
  • 跨地区经营怎么交税
  • 销售货物类型
  • 车辆租赁合同印花税怎么算
  • 企业发现多缴税款超过3年
  • 以前年度亏损可以税前扣除吗
  • 住宿费的普通发票怎么开
  • 未达起征点销售额和其他免税销售额
  • 工会经费的计税基础
  • 金蝶软件如何成批反审核
  • 预付帐款科目如何转平?
  • 财务报表教育费附加包含地方教育费附加吗
  • c盘文件详解
  • windows更新出现错误重新打开设置
  • 本年收益在借方还结转吗
  • 利润表营业成本是负数是什么原因
  • 境内单位和个人将船舶出租到境外的,不征收车船税
  • 收到稳岗补贴计入哪个科目
  • win11透明任务栏怎么设置
  • rapimgr.exe - rapimgr进程是什么文件.有哪些作用
  • 以固定资产换入无形资产
  • 埃热泽尔斯湖面上的波纹,拉脱维亚拉特加尔地区 (© Eaglewood Films/Nimia)
  • 辞退补偿款怎么算
  • chrome谷歌浏览器
  • 城镇土地使用税纳税义务发生时间
  • 以房产投资入股应当缴纳契税
  • 搜索神器官网
  • php时间函数代码
  • 数据库操作实例
  • 企业所得税可以结转以后年度扣除的费用
  • css实现背景图片变透明
  • 工程施工科目下的间接费用怎么使用
  • ping命令可以用来测试什么
  • 研发支出什么时候转管理费用
  • 来料加工企业的税率是多少
  • 专项应付款如何核算
  • access数据库干嘛的
  • sqlserver连接数据库的方法
  • 投资公司和控股公司关系
  • access untagged
  • 分公司注销总公司出的文件模板
  • 企业保持存货的必要性
  • 电子承兑背书一般多久到账
  • 销售费用专票能抵扣吗
  • 当月的银行日记账漏计怎么办
  • 施工企业如何确权
  • 仓库员工工资
  • 一次性收取一年的租金如何做分录
  • xp怎么删除多余的操作系统
  • linux怎样挂载
  • windows没网络是怎么回事
  • centos5安装步骤
  • windowsxp示例图片
  • win10 1511(win10 TH2)如何调整开始屏幕磁贴大小?
  • win7系统桌面右键没有个性化
  • Win10预览版镜像
  • javascript+
  • JavaScript实现QQ列表展开收缩扩展功能
  • python文本处理教程
  • javascript文字特效
  • javascript 类
  • 购车发票包含
  • 申报参保时间怎么填
  • 税控盘升级后开票流程
  • 如何给局长送点礼品
  • 企业筹建期间发生的费用应计入什么账户
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设