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 为视图id
  • field 为要改变的属性
  • value 为属性的值 如果该项目为简单模式
data[idx].id=value

列表回调函数的参数说明

onItemClick=function(parent, view, position, id)
end
  • parent 当前列表
  • view 当前项目视图
  • position 从0开始计数的项目序号
  • id 从1开始计数的项目序号

该说明仅针对使用 LuaAdapter 的列表

LuaMultiAdapter 多布局适配器

和 LuaAdapter 用法基本一致,仅说明不同部分

  • 构建时传入布局数组
  • 添加数据时有 __type 属性,值为该项目使用布局在构建时的索引
  • 设置动画时传入动画函数数组,顺序与布局数组相同