AndroLua学习(8)——界面之适配器

什么是适配器呢?顾名思义,就是把一些数据给弄得适当,适合以便于在View上显示。适配器就像显示器,把复杂的东西按人可以接受的方式来展现。
适配器控件主要包括(ListView,GridView,Spinner,ExpandableList等)
想要动态为此类控件添加项目就必须得要依靠适配器!
1、适配器使用
AarrayAdapter(简单适配器)

创建项目数组
数据={}

添加项目数组
for i=1,100 do
table.insert(数据,tostring(i))
end

创建适配器
array_adp=ArrayAdapter(activity,android.R.layout.simple_list_item_1,String(数据))

设置适配器
lv.setAdapter(array_adp)

2、LuaAdapter(Lua适配器)
创建自定义项目视图
item={
LinearLayout,
orientation=”vertical”,
layout_width=”fill”,
{
TextView,
id=”text”,
layout_margin=”15dp”,
layout_width=”fill”
},
}
创建项目数组
data={}
创建适配器
adp=LuaAdapter(activity,data,item)
添加数据
for n=1,100 do
table.insert(data,{
text={
Text=tostring(n),
},
})
end
设置适配器
lv.Adapter=adp

以上的适配器ListView、Spinner与GridView等控件通用

3、
那么ExpandableListView(折叠列表)怎么办呢?
别怕,安卓系统还提供了一个ArrayExpandableListAdapter来给我们使用,可以简单的适配ExpandableListView,下面给出实例

ns={
“Widget”,”Check view”,”Adapter view”,”Advanced Widget”,”Layout”,”Advanced Layout”,
}

wds={
{“Button”,”EditText”,”TextView”,
“ImageButton”,”ImageView”},
{“CheckBox”,”RadioButton”,”ToggleButton”,”Switch”},
{“ListView”,”ExpandableListView”,”Spinner”},
{“SeekBar”,”ProgressBar”,”RatingBar”,
“DatePicker”,”TimePicker”,”NumberPicker”},
{“LinearLayout”,”AbsoluteLayout”,”FrameLayout”},
{“RadioGroup”,”GridLayout”,
“ScrollView”,”HorizontalScrollView”},
}

mAdapter=ArrayExpandableListAdapter(activity)
for k,v in ipairs(ns) do
mAdapter.add(v,wds[k])
end
el.setAdapter(mAdapter)
这样就实现ExpandableListView项目的适配了

4、
当然AdapterView的事件响应也是与普通控件不同的。
ListView与GridView的单击与长按事件
项目被单击
id.onItemClick=function(l,v,p,i)
print(v.Text)
return true
end
项目被长按
id.onItemLongClick=function(l,v,p,i)
print(v.Text)
return true
end

Spinner的项目单击事件
id.onItemSelected=function(l,v,p,i)
print(v.Text)
end

ExpandableListView的父项目与子项目单击事件
id.onGroupClick=function(l,v,p,s)
print(v.Text..”:GroupClick”)
end

id.onChildClick=function(l,v,g,c)
print(v.Text..”:ChildClick”)
end