下拉刷新使用指导

← 返回下拉刷新组件参考 · 全部使用指导

下拉刷新使用指导

不可见组件:给列表显示框、垂直滚动条布局、布局列表框、Web浏览框等可滚动组件加上「下拉刷新」手势—— 手指在顶部往下拉,出现转圈,松手触发下拉刷新时(Refresh)事件,数据加载完调用结束刷新(FinishRefresh)收起转圈。

内化自开源拓展 SwipeRefresh(ColinTree),改用新版 Android 组件库,修复了原版默认配色不生效等问题, 两个注册方法合并为一个注册(组件)(Register)。列表滚到中间时下拉只会滚动列表,不会误触发刷新。

快速上手

  1. 拖一个列表显示框(高度设为「充满」)和一个下拉刷新到屏幕;
  2. 搭下面的代码块,用延时运行模拟 1 秒的网络加载:

各案例独立使用;组合到同一屏幕时,将同名事件的处理合并到一个事件积木中。

global 数据 = ["第1条", "第2条", "第3条"]

when Screen1.Initialize() {
  下拉刷新1.Register(列表显示框1)
  列表显示框1.Elements = 数据
}

when 下拉刷新1.Refresh() {
  after(1000) {
    listInsert(数据, 1, "刚刚刷新")
    列表显示框1.Elements = 数据
    下拉刷新1.FinishRefresh()
  }
}

运行后在列表顶部往下拉,出现蓝色转圈;1 秒后列表顶部多出一条「刚刚刷新」,转圈收起。

实际项目里把「延时运行」换成真正的数据加载(如 Web 组件的 Get),在对应的完成事件(如「获得文本时」)里再调用结束刷新(FinishRefresh)。

常见问题

现象 检查
下拉没有转圈 是否在屏幕初始化时调用了注册(组件)(Register);启用(Enabled)是否为真
转圈一直不消失 数据加载完后要调用结束刷新(FinishRefresh)(或把正在刷新(Refreshing)设为假)
注册后列表大小变了 注册前先设好被注册组件的宽高;注册后再改它的宽高不会生效
想给两个列表都加下拉刷新 每个列表用一个下拉刷新组件;同一个组件再次注册会把手势移到新组件上

搭建与测试

在设计器拖入本组件和案例涉及的按钮、标签、布局等组件,按案例中的名称重命名。先运行最小案例,确认事件返回,再增加业务逻辑。示例中的素材先上传到项目,服务器地址、令牌、文件路径换成自己的值。

可见组件需要有非零宽高;不可见工具组件必须由属性或方法启动。设计器展示样式不等于运行时已加载数据或绑定目标。联机测试应使用包含本组件的 AI 伴侣;涉及系统入口或权限的行为还要编译安装后验证。

案例:网络完成后结束刷新

放下拉刷新、列表显示框和 Web客户端;输入框填写你自己的接口。成功与超时路径都结束转圈。

when Screen1.Initialize() {
  下拉刷新1.Register(列表显示框1)
}
when 下拉刷新1.Refresh() {
  Web客户端1.Url = 文本输入框_接口.Text
  Web客户端1.Get()
}
when Web客户端1.GotText(URL网址, 响应代码, 响应类型, 响应内容) {
  列表显示框1.Elements = list(响应内容)
  下拉刷新1.FinishRefresh()
}
when Web客户端1.TimedOut(URL网址) {
  下拉刷新1.FinishRefresh()
  标签1.Text = "请求超时"
}

先注册滚动组件;一只下拉刷新对应一个目标。HTTP 错误和网络超时也要收起转圈;实际列表按接口响应解析,示例直接显示响应文本。

属性、方法与事件速查

完整参数类型、默认值和平台说明见组件参考。下表按调用入口列出用途;有完成事件的方法在事件中读取结果。

入口 用途
启用(Enabled) 是否允许下拉刷新。设为假时下拉没有反应。
指示器背景色(IndicatorBackgroundColor) 转圈底下圆形背景的颜色。
指示器颜色(IndicatorColor) 转圈的颜色。
大号转圈(LargeIndicator) 是否使用大号转圈。
正在刷新(Refreshing) 是否正在刷新(转圈显示中)。设为真可在代码里主动显示转圈,设为假收起转圈。
结束刷新(FinishRefresh) 结束刷新:收起转圈。在「下拉刷新时」事件里的数据加载完成后调用。
注册(组件)(Register) 把下拉刷新加到指定组件上(通常是列表显示框、垂直滚动条布局、布局列表框或网页浏览框),一般在屏幕初始化时调用一次。再次调用会把刷新手势移到新组件上。请先设好该组件的宽高:注册后再修改它的宽高不会生效。
下拉刷新时(Refresh) 用户下拉并松手时触发。在这里加载数据,完成后调用「结束刷新」收起转圈。

常见问题与验收

检查项 操作与预期
初始化 对照案例检查是否已经调用加载、注册、连接或显示方法;仅拖入组件不会替你执行这些步骤。
结果返回 将成功事件和失败事件都接到标签,记录事件参数;异步操作完成前不读取结果属性。
输入配置 检查素材名大小写、网址是否为直接资源地址、文件是否存在、编号和索引是否在范围内。
平台与权限 按组件参考中的平台说明测试;授权被拒绝时应有明确提示,不继续假定操作成功。
最小案例 先验证页面中的最小案例,再验证第二个场景;重复操作、取消、返回屏幕后结果应符合事件说明。

完整 .aia 源码与操作指导

下载 .aia 源码

无需网络和账号,2秒延迟明确模拟数据加载。独立占半屏的设备列表才是注册目标,需滚到列表顶部再向下拉。代码展示真实刷新事件、程序刷新与完成/取消;接实际接口时,把更新与结束放到响应事件中。

导入 SwipeRefreshAllFeatures.aia,连接最新伴侣,或编译独立安装包。真机/伴侣运行尚未实测。

API / 功能 操作入口 预期结果
Register / Enabled 初始化,开关后点设置 注册独立刷新列表并启用,禁用时手指下拉不触发
Refresh / Refreshing 读取 列表顶部下拉 真实事件次数增加,指示器显示,2秒后数据文字更新
FinishRefresh 等计时器完成 刷新结束,Refreshing变假,可再次刷新
Refreshing 设置 点程序刷新/结束 程序进入刷新状态,不冒充手势事件;结束可重复调用
LargeIndicator 设置及读取 开关后点设置 下次显示指示器观察大小差异
IndicatorColor / IndicatorBackgroundColor 设置及读取 点配色后刷新 指示器前景与背景变化,属性区读取色值

所有返回值均用于界面反馈,错误由底部错误区展示。设计器采用明确非默认配置,初始化与界面同步。API 覆盖检查按最终 AIA 检查方法、事件、属性读取与设置及设计器配置,不能替代真实设备验证。

下拉刷新

导入方法:项目 → 导入项目(.aia)→ 选择下载的 .aia 源码文件。 无需网络和账号,2秒延迟明确模拟数据加载。独立占半屏的设备列表才是注册目标,需滚到列表顶部再向下拉。代码展示真实刷新事件、程序刷新与完成/取消;接实际接口时,把更新与结束放到响应事件中。 覆盖检查 17/17。首次载入及保存重开均0个错误,真实后台导入、安装包编译通过;真机/伴侣/硬件联调尚未实测。全部属性读写、方法与事件的操作入口和预期结果见组件指导。

文档反馈