LuaAdapter 适配器
列表适配器就是沟通数据与视图的桥梁,在 AndroLua+ 内置了两个适配器LuaArrayAdapter 和 LuaAdapter
LuaArrayAdapter
LuaArrayAdapter 相对比较简单,仅可以简单展示图片或文字列表
adp = LuaArrayAdapter(activity, layout)
参数中 avtivity
为当前活动,layout
为项目布局,布局仅支持基本视图如 TextView
ImageView
等,不支持布局嵌套
- 使用
adp.add(数据)
添加数据 - 视图为
TextView
时,数据就是要显示的文字 - 视图为
ImageView
时,数据为要显示的图片的相对或绝对路径
LuaAdapter
LuaAdapter 可以实现复杂列表的展示,
adp = LuaAdapter(activity, data, layout)
参数中 activity
为当前活动,data
为要显示的数据表,layout
为列表布局,支持任意嵌套
这里需要注意列表项目布局的 id
对外不可见,可以在列表点击回调函数 onItemClick(l,v,p,i)
的第二个参数中获得
使用 v.tag.id
可以获取列表项目中的具体视图对象
但是不可以直接通过这个对象改变它的属性,因为在视图回收过程中你改变的属性会被覆盖或者污染,只能使用改变数据的方式改变视图属性
data
数据表可以是简单模式,或者完整模式,也可以使用混合模式
- 简单模式使用
id=value
的形式,value
使用自动判断的方式对id对应的视图设置文字或者图片 - 完整模式使用
id={field=value}
的形式,可以方便设置一个视图的多个值,需要注意的是,必须的列表数据的每一项使用相同的属性,不可以在某一个项目中缺少否则视图显示将会混乱 - 混合模式是有的视图使用简单模式,有的视图使用完整模式,但是同一id的视图必须使用相同的模式
警告
数据的添加,你可以在构建前或构建后对 data
进行添加,删除或修改。如果列表已经显示,需要调用 adp.notifyDataSetChanged()
更新显示,否则将导致数据显示不及时的问题!
数据添加
table.insert(data, {id1=value1, id2=value2})
具体说明参考上边关于三种模式的说明
删除数据
table.remove(data, idx)
idx
为列表项目的序号,从1开始计数
插入数据
table.insert(data, idx, {id1=value})
数据的格式同上 idx
为列表项目序号,从1开始计数
修改数据
data[idx].id.field=value
idx
为项目序号id
为视图idfield
为要改变的属性value
为属性的值 如果该项目为简单模式
data[idx].id=value
列表回调函数的参数说明
onItemClick=function(parent, view, position, id)
end
parent
当前列表view
当前项目视图position
从0开始计数的项目序号id
从1开始计数的项目序号
该说明仅针对使用 LuaAdapter
的列表
LuaMultiAdapter 多布局适配器
和 LuaAdapter 用法基本一致,仅说明不同部分
- 构建时传入布局数组
- 添加数据时有
__type
属性,值为该项目使用布局在构建时的索引 - 设置动画时传入动画函数数组,顺序与布局数组相同