List
control
| Syntax | Description |
|---|---|
| UI.List.new (x, y, index, entries) | Create a new instance of list.x and y are the screen coordinates where the list will begin: numbers index is the default selected item : number entries is a list of entries: table |
| my_list:set_index (index) | Set index for the instance of list : number |
| my_list:set_index_delta (delta, wrap) | Set index for the instance of list using delta, with wrapping : number, boolean |
| my_list:redraw() | Redraw page with list elements for the instance of list |
query
| Syntax | Description |
|---|---|
| my_list.x | Returns originating x-coordinate : number |
| my_list.y | Returns originating y-coordinate : number |
| my_list.index | Returns current index : number |
| my_list.entries | Returns list of entries : list |
| my_list.active | Returns list’s active state: boolean |
example

UI = require("ui")
-- create lists of entries
emotions = {'happy', 'angry', 'sad'}
places = {'park', 'pool', 'school'}
times = {'morning', 'afternoon','evening'}
-- creates instances of lists
list = {}
list[1] = UI.List.new(0,34,1,emotions)
list[2] = UI.List.new(40,34,2,places)
list[3] = UI.List.new(80,34,3,times)
function redraw()
screen.clear()
screen.font_size(8)
for i=1,3 do -- redraw three lists
list[i]:redraw()
end
screen.move(0,8)
screen.level(15)
screen.text('i was '..emotions[list[1].index]..' at the '..places[list[2].index])
screen.move(0,16)
screen.text('in the '..times[list[3].index]..'.')
screen.update()
end
function enc(n,d)
if n == 1 then
list[1]:set_index_delta(d,false) -- sets index according to delta of E1, no wrapping
elseif n == 2 then
list[2]:set_index_delta(d,true) -- sets index according to delta of E2, with wrapping
elseif n == 3 then
list[3]:set_index_delta(d,false) -- sets index according to delta of E2, with no wrapping
end
redraw()
end
description
Creates a list in the on-screen UI. With a screen.font_size of 8, this UI can accommodate a maximum of six entries. For lists with more entries, see ScrollingList.
UI.List.new returns a table which should be stored in a variable (in the example, we nest three entries into the list table). The various other controls and queries can then be called using the assigned variable in the manner described above.
In the example above, the three instances of UI.List are nested into the list table: list[1], list[2], and list[3].
The UI is drawn using the my_list:redraw() function, which needs to be called when there is a change.