UIListGroup
来自于:AC模块工作室立即使用
open close show hide getIndex getDataByIndex reloadData deleteItem updateItem insertItem appendData getCount setRefreshHeader setRefreshFooter stopRefresh
论坛示例
为帮助用户更好更快的使用模块,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。
概述
UIListGroup 模块封装了一个数据列表控件,列表项水平侧滑可出现控制按钮;开发者可自定义列表的数据源,及列表的样式,支持列表项的增、删、改、查,支持批量更新、追加数据。 本模块是基于 APICloud 开源模块 UIListView 修改的。
open
打开
open({params}, callback(ret, err))
params
rect:
- 类型:JSON 对象
- 描述:(可选项)模块的位置及尺寸
- 注意:在 Android 平台上此参数必须传
- 内部字段:
{
x: 0, //(可选项)数字类型;模块左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:0
y: 0, //(可选项)数字类型;模块左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:0
w: 320, //(可选项)数字类型;模块的宽度,支持设置'auto';默认值:所属的 Window 或 Frame 的宽度
h: 480 //(可选项)数字类型;模块的高度,支持设置'auto';默认值:所属的 Window 或 Frame 的高度
}
data:
- 类型:数组
- 描述:列表的数据源,开发者可以自定义唯一的键值对信息(如:uid: ‘1001’),供 getIndex 使用
- 内部字段:
[{
imgPath: '', //(可选项)字符串类型;列表项的配图路径,支持http://、https://、widget://、fs://等协议,网络图片会被缓存到本地,默认显示apicloud图片
leftColor: '#f00', //(可选项)数字类型;列表项左边视图的颜色;默认:'#f00'
title: '', //(可选项)字符串类型;标题,若不传或为空则 subTitle 上下位置居中显示
timestamp:'', //(可选项)字符串类型;列表分组时间戳,若不传则与最近的一条有效timestamp的数据中的timestamp保持一致; 如果前面的数据,都没有传timestamp,则不显示分组标题
subTitle: '', //(可选项)字符串类型;子标题,若不传或为空则 title 上下位置居中显示
rightImgArray:[], //(可选项)数组类型;列表项右侧的配图,若不传或为空则不显示
time: '', //(可选项)字符串类型;时间标签,若不传则不显示
}]
rightBtns:
- 类型:数组
- 描述:(可选项)列表项向左滑动露出的按钮组
- 内部字段:
[{
bgColor: '#388e8e', //(可选项)字符串类型;按钮背景色,支持 rgb、rgba、#;默认:'#388e8e'
activeBgColor: '', //(可选项)字符串类型;按钮按下时的背景色,支持 rgb、rgba、#(ios不支持)
width: 70, //(可选项)数字类型;按钮的宽度;默认:w / 4
title: '', //(可选项)字符串类型;按钮标题,水平、垂直居中
titleSize: 12, //(可选项)数字类型;按钮标题文字大小;默认:12
titleColor: '#fff', //(可选项)字符串类型;按钮标题文字颜色,支持 rgb、rgba、#;默认:'#ffffff'
}]
styles:
- 类型:JSON 对象
- 描述:(可选项)模块各部分的样式
- 内部字段:
{
cellSpacing:10 //(可选项)数字类型:行间距的高度:默认15
halvingLine:'' //(可选项)字符串类型;分割线颜色,支持 rgb、rgba、#;默认:'rgba(255,255,255,0.)'
backgroundColor:'#272727' , //(可选项)字符串类型;模块的背景颜色,支持 rgb、rgba、#;默认:'#272727'
item: { //(可选项)JSON对象;列表项的样式
bgColor: '#AFEEEE', //(可选项)字符串类型;列表项的背景色,支持 rgb、rgba、#;默认:'#AFEEEE'
activeBgColor: '#F5F5F5', //(可选项)字符串类型;列表项按下时的背景色,支持 rgb、rgba、#;默认:'#F5F5F5'(iOS不支持)
height: 55, //(可选项)数字类型;列表项的高度;默认:55
leftWidth: 10, //(可选项)数字类型;列表项左边视图的宽度;默认:10
imgMarginLeft:10, //(可选项)数字类型;列表项的图片的左边距;默认:10
imgMarginRight:10, //(可选项)数字类型;列表项的图片的右边距;默认:10
imgWidth: 20, //(可选项)数字类型;列表项配图的宽度;默认:列表项的高度减去10px
imgHeight: 20, //(可选项)数字类型;列表项配图的高度;默认:列表项的高度减去10px
imgCorner: 4, //(可选项)数字类型;列表项配图的圆角大小;默认:0
placeholderImg: '', //(可选项)字符串类型;列表项配图的占位图路径(本地路径,fs://、widget://),默认:APICloud 图标
titleMarginTop:5 //(可选项)数字类型;列表项的图片的上边距;默认:5(跟time的下边距相同)
subTitleMarginBottom:5 //(可选项)数字类型;列表项的图片的下边距;默认:5(跟badge的下边距相同)
titleSize: 12, //(可选项)数字类型;列表项标题文字大小;默认:12
titleColor: '#000', //(可选项)字符串类型;列表项标题文字颜色,支持 rgb,rgba,#;默认:'#000000'
subTitleSize: 12, //(可选项)数字类型;列表项子标题文字大小;默认:12
subTitleColor: '#000', //(可选项)字符串类型:列表项子标题文字颜色,支持 rgb、rgba、#;默认:'#000000'
rightImgSize:30 //(可选项)数字类型;列表项右侧图片的大小;默认:30
timeColor: '#000', //(可选项)字符串类型;时间标签的文字颜色,支持 rgb、rgba、#;默认:'#000000'
timeSize: 12, //(可选项)数字类型;时间标签的文字大小;默认:12
marginRight: 10 //(可选项)数字类型;时间标签距离模块右边距;默认:10
timeWidth:50 //(可选项)数字类型;列表项时间的宽度;默认:50
}
}
fixedOn:
- 类型:字符串类型
- 描述:(可选项)模块视图添加到指定 frame 的名字(只指 frame,传 window 无效)
- 默认:模块依附于当前 window
showScrollBar:
- 类型:布尔
- 描述:(可选项)是否显示滚动条
- 默认:true
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
eventType: 'show', //字符串类型;交互事件类型
//取值范围如下:
//show(模块加载成功)
//rightImgClick
index: 0, //数字类型;列表项的索引
btnIndex: 0, //数字类型;列表项侧滑出现的按钮的索引
rightImgClickIndex: 0 //数字类型;点击右侧图标的index(从左到右开始索引)
}
示例代码
var UIListGroup = api.require('UIListGroup');
UIListGroup.open({
rect: {
x: 0,
y: 0,
w: api.winWidth,
h: api.frameHeight
},
data: [{
uid: '1001',
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}, {
uid: '1001',
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}, {
uid: '1001',
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}, {
uid: '1001',
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}, {
uid: '1001',
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}, {
uid: '1001',
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}, {
uid: '1001',
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}, {
uid: '1001',
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}, {
uid: '1001',
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}, {
uid: '1001',
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}, {
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}],
rightBtns: [{
bgColor: '#388e8e',
activeBgColor: '',
width: 70,
title: '按钮',
titleSize: 12,
titleColor: '#fff'
}],
styles: {
backgroundColor: '#696969',
item: {
bgColor: '#AFEEEE',
activeBgColor: '#F5F5F5',
height: 55,
imgMarginLeft:10,
imgMarginRight:10,
imgWidth: 20,
imgHeight: 20,
imgCorner: 4,
placeholderImg: '',
titleMarginTop:5,
subTitleMarginBottom:5,
titleSize: 12,
titleColor: '#000',
subTitleSize: 12,
subTitleColor: '#000',
subTitleWidth: 100,
rightImgSize:30,
timeColor: '#000',
timeSize: 16,
marginRight: 10,
}
},
fixedOn: api.frameName
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
close
关闭数据列表模块
close()
示例代码
var UIListGroup = api.require('UIListGroup');
UIListGroup.close();
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
show
显示
show()
示例代码
var UIListGroup = api.require('UIListGroup');
UIListGroup.show();
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
hide
隐藏
hide()
示例代码
var UIListGroup = api.require('UIListGroup');
UIListGroup.hide();
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
getIndex
根据开发者自定义的唯一标识(open 接口的 data 参数中自定义的唯一标识)查找列表项对应的数据
getIndex({params}, callback(ret, err))
params
key:
- 类型:字符串
- 描述:调用 open 接口时,data 参数传入的开发者自定义的唯一标识的 key
value:
- 类型:字符串
- 描述:调用 open 接口时,data 参数传入的开发者自定义的唯一标识的 value
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
index: 0, //数字类型;当前列表项的索引
data: [] //数组类型;当前列表项的数据,内部字段与 open 时的 data 参数一致
}
示例代码
var UIListGroup = api.require('UIListGroup');
UIListGroup.getIndex({
key: 'uid',
value: '1001'
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
getDataByIndex
根据列表项的索引获取对应的数据
getDataByIndex({params}, callback(ret))
params
index:
- 类型:数字
- 描述:(可选项)列表项的索引
- 默认值:0
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
data: [] //数组类型;当前列表项的数据,内部字段与 open 时的 data 参数一致
}
示例代码
var UIListGroup = api.require('UIListGroup');
UIListGroup.getDataByIndex({
index: 0
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
reloadData
刷新列表数据
reloadData({params}, callback(ret))
params
data:
- 类型:数组
- 描述:(可选项)列表的数据源,若不传或传空,仅收起下拉刷新组件
- 内部字段:
[{
imgPath: '', //(可选项)字符串类型;列表项的配图路径,支持http://、https://、widget://、fs://等协议,网络图片会被缓存到本地,若不传则标题和子标题靠最左侧显示
title: '', //(可选项)字符串类型;标题,若不传或为空则 subTitle 上下位置居中显示
timestamp:'', //(可选项)字符串类型;列表分组时间戳,若不传则不显示分组标题
subTitle: '', //(可选项)字符串类型;子标题,若不传或为空则 title 上下位置居中显示
rightImgArray:[], //(可选项)数组类型;列表项右侧的配图,若不传或为空则不显示
time: '', //(可选项)字符串类型;时间标签,若不传则不显示
}]
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true //布尔型;true||false
}
示例代码
var UIListGroup = api.require('UIListGroup');
UIListGroup.reloadData({
data: [{
imgPath: 'http://img1.3lian.com/gif/more/11/201206/a5194ba8c27b17def4a7c5495aba5e32.jpg',
title: '新标题',
subTitle: '新子标题',
}]
}, function(ret) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
deleteItem
根据索引删除某一条列表的数据
deleteItem({params}, callback(ret))
params
index:
- 类型:数字
- 描述:(可选项)数据列表的索引
- 默认值:0
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true //布尔型;true||false
}
示例代码
var UIListGroup = api.require('UIListGroup');
UIListGroup.deleteItem({
index: 2
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
updateItem
根据索引更新某一条列表的数据
updateItem({params}, callback(ret))
params
index:
- 类型:数字
- 描述:(可选项)数据列表的索引
- 默认值:0
data:
- 类型:JSON 对象
- 描述:列表的数据源
- 内部字段:
{
imgPath: '', //(可选项)字符串类型;列表项的配图路径,支持http://、https://、widget://、fs://等协议,网络图片会被缓存到本地,若不传则标题和子标题靠最左侧显示
title: '', //(可选项)字符串类型;标题,若不传或为空则 subTitle 上下位置居中显示
timestamp:'', //(可选项)字符串类型;列表分组时间戳,若不传则不显示分组标题
subTitle: '', //(可选项)字符串类型;子标题,若不传或为空则 title 上下位置居中显示
rightImgArray:[], //(可选项)数组类型;列表项右侧的配图,若不传或为空则不显示
time: '', //(可选项)字符串类型;时间标签,若不传则不显示
}
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true //布尔型;true||false
}
示例代码
var UIListGroup = api.require('UIListGroup');
UIListGroup.updateItem({
index: 2,
data: {
imgPath: 'http://img1.3lian.com/gif/more/11/201206/a5194ba8c27b17def4a7c5495aba5e32.jpg',
title: '刷新标题',
subTitle: '刷新子标题',
}
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
insertItem
根据索引向某一条列表插入数据
insertItem({params}, callback(ret, err))
params
index:
- 类型:数字
- 描述:(可选项)数据列表的索引
- 默认值:列表最后一条数据的索引
data:
- 类型:数组
- 描述:列表的数据源
- 内部字段:
[{
imgPath: '', //(可选项)字符串类型;列表项的配图路径,支持http://、https://、widget://、fs://等协议,网络图片会被缓存到本地,默认显示apicloud图片
leftColor: '#f00', //(可选项)数字类型;列表项左边视图的颜色;默认:'#f00'
title: '', //(可选项)字符串类型;标题,若不传或为空则 subTitle 上下位置居中显示
timestamp:'', //(可选项)字符串类型;列表分组时间戳,若不传则与最近的一条有效timestamp的数据中的timestamp保持一致; 如果前面的数据,都没有传timestamp,则不显示分组标题
subTitle: '', //(可选项)字符串类型;子标题,若不传或为空则 title 上下位置居中显示
rightImgArray:[], //(可选项)数组类型;列表项右侧的配图,若不传或为空则不显示
time: '', //(可选项)字符串类型;时间标签,若不传则不显示
}]
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true //布尔型;true||false
}
示例代码
var UIListGroup = api.require('UIListGroup');
UIListGroup.insertItem({
index: 2,
data: [{
uid: '1001',
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}, {
uid: '1001',
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}, {
uid: '1001',
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}, {
uid: '1001',
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}, {
uid: '1001',
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}, {
uid: '1001',
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}, {
uid: '1001',
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}, {
uid: '1001',
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}, {
uid: '1001',
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}, {
uid: '1001',
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}, {
imgPath: 'widget://res/img/apicloud.png',
title: '标题',
subTitle: '子标题,说明文字',
time: '今天 13:45',
}],
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
appendData
向列表末端追加数据
appendData({params}, callback(ret))
params
data:
- 类型:数组对象
- 描述:列表的数据源,若不传或传空,仅收起上拉加载组件
- 内部字段:
[{
imgPath: '', //(可选项)字符串类型;列表项的附图路径,支持http://、https://、widget://、fs://等协议,网络图片会被缓存到本地,若不传则标题和子标题靠最左侧显示
title: '', //(可选项)字符串类型;标题,若不传或为空则 subTitle 上下位置居中显示
timestamp:'', //(可选项)字符串类型;列表分组时间戳,若不传则不显示分组标题
subTitle: '', //(可选项)字符串类型;子标题,若不传或为空则 title 上下位置居中显示
rightImgArray:[], //(可选项)数组类型;列表项右侧的配图,若不传或为空则不显示
time: '', //(可选项)字符串类型;时间标签,若不传则不显示
}]
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true //布尔型;true||false
}
示例代码
var UIListGroup = api.require('UIListGroup');
UIListGroup.appendData({
data: [{
imgPath: 'http://d.hiphotos.baidu.com/image/pic/item/4d086e061d950a7b29a788c209d162d9f2d3c922.jpg',
title: '新增标题',
subTitle: '新增子标题',
}]
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
getCount
获取当前列表的总数据量
getCount(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
count: 21 //数字类型;当前列表包含的数据总数
}
示例代码
var UIListGroup = api.require('UIListGroup');
UIListGroup.getCount(function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setRefreshHeader
设置下拉刷新,通过 reloadData 收起下拉刷新组件
setRefreshHeader({params}, callback(ret))
params
style:
- 类型:JSON对象
- 描述:下拉刷新的样式配置
- 内部字段:
{
bgColor: '#C0C0C0', //(可选项)字符串类型;下拉刷新的背景设置,支持 rgb、rgba、#,该背景大小同当前模块的宽高;默认:#C0C0C0
refreshHeaderHeight : 60 , //(可选项)数字类型;下拉高度达到一定阈值,本参数暂仅支持 ios 平台;默认:60
loadAnimInterval : 200 , //(可选项)数字类型;图片播放时间间隔,单位为毫秒;默认:200
image: { //(可选项)JSON 对象类型;下拉刷新相关图片设置;若不传则使用默认图标
pull:['fs://t1.png','fs://t2.png',...], //(可选项)数组类型;组成下拉过程的动画关键帧图片数组,这组图片随下拉高度同步放大缩小,同时自动播放关键帧图片:每下拉一定距离(阈值/图片数量),播放一帧关键帧图片;图片规格为正方形,如:50*50、100*100;若不传则使用默认图标
load: ['fs://t1.png','fs://t2.png',...] //(可选项)数组类型;组成下拉刷新加载状态动画的关键帧图片数组,图片为正方形的,如:50*50、100*100,建议开发者传大小合适的图片以适配高分辨率手机屏幕;若不传则使用默认图标
},
isScale: true //(可选项)布尔类型;播放下拉过程中的关键帧动画时,是否同时添加等比同步缩放效果;默认值:true
}
callback()
下拉刷新的事件回调
示例代码
var UIListGroup = api.require('UIListGroup');
UIListGroup.setRefreshHeader({
style: {
bgColor: '#C0C0C0',
isScale: true,
image: {
pull: [
'widget://image/refresh/dropdown0.png',
'widget://image/refresh/dropdown1.png',
'widget://image/refresh/dropdown2.png',
'widget://image/refresh/dropdown3.png',
'widget://image/refresh/dropdown4.png',
'widget://image/refresh/dropdown5.png',
'widget://image/refresh/dropdown6.png'
],
load: [
'widget://image/refresh/loading0.png',
'widget://image/refresh/loading1.png',
'widget://image/refresh/loading2.png',
'widget://image/refresh/loading3.png',
'widget://image/refresh/loading4.png'
]
}
}
}, function(ret) {
//下拉刷新被触发,自动进入加载状态,使用 reloadData() 手动结束加载中状态
alert('开始加载刷新数据,摇一摇停止加载状态');
api.addEventListener({
name: 'shake'
}, function(ret, err) {
UIListGroup.reloadData();
});
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setRefreshFooter
设置上拉加载,通过 appendData 收起上拉加载组件
setRefreshFooter({params}, callback())
params
bgColor:
- 类型:字符串
- 描述:(可选项)上拉加载区域的背景色,支持 rgb、rgba、#
- 默认值:’#f5f5f5’
callback(ret)
上拉加载的事件回调
示例代码
var UIListGroup = api.require('UIListGroup');
UIListGroup.setRefreshFooter({
bgColor: '#F5F5F5'
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
stopRefresh
停止上拉加载
stopRefresh
示例代码
var UIListGroup = api.require('UIListGroup');
UIListGroup.stopRefresh();
可用性
iOS系统
可提供的1.0.0及更高版本
论坛示例
为帮助用户更好更快的使用模块,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。