====== Lists ======
//(Information and examples taken from the DroidScript documentation)//
===== Description =====
Create List objects using the **CreateList** method of the **[[built_in:app|app]]** object:
lst = app.CreateList( list, width, height, options );
Use the **SetOnTouch** and **SetOnLongTouch** methods of the List object to set the name of a function you want to be called when a list item is selected. The selected item is passed into your OnTouch callback function as a parameter every time an item is selected or long touched.
====Example - Simple====
function OnStart()
{
lay = app.CreateLayout( "Linear", "VCenter,FillXY" );
lst = app.CreateList( "Fred,Bill,Jim", 0.8, 0.4 );
lst.SetOnTouch( lst_OnTouch );
lst.SetOnLongTouch( lst_OnLongTouch );
lay.AddChild( lst );
app.AddLayout( lay );
}
function lst_OnTouch( item )
{
app.ShowPopup( "Item = " + item, "Short" );
}
function lst_OnLongTouch( item )
{
app.ShowPopup( "Long Touch = " + item, "Short" );
}
You can change the look of a List using the **SetBackColor** and **SetTextColor** functions on the list object. You can also set a background image/pattern or background gradient for the List using the **SetBackground** and **SetBackGradient** functions.
====Example - Gray on white====
function OnStart()
{
lay = app.CreateLayout( "Linear", "VCenter,FillXY" );
lst = app.CreateList( "Fred,Bill,Jim", 0.8, 0.4 );
lst.SetTextColor( "#ff666666" );
lst.SetBackColor( "#ffffffff" );
lst.SetOnTouch( lst_OnTouch );
lay.AddChild( lst );
app.AddLayout( lay );
}
function lst_OnTouch( item )
{
app.ShowPopup( "Touched Item = " + item );
}
The List object also supports **multi-line** list items and can show certain types of **icon**. Multi-line items are created by dividing each list item up using the ':' (colon) character. If you need to use a colon character in your item text then use this character sequence: ^c^.
You can have one icon and one or two lines of text using the following formats:
* title : icon
* title : body : icon
The available icons types are displayed using the following key words:
* "folder"
* "audiofolder"
* "photofolder"
* "videofolder"
* "audio"
* "photo"
* "video"
* "playlist"
You can also use resource images or images from your sdcard instead of the keywords, for example:- "Img/MyIcon.png" or "/sdcard/images/image1.jpg"
====Example - Title + Icon====
function OnStart()
{
lay = app.CreateLayout( "Linear", "VCenter,FillXY" );
var data = "Folder:folder,Audio:audio,Photo:photo,Video:video";
lst = app.CreateList( data, 0.8, 0.4 );
lst.SetOnTouch( lst_OnTouch );
lay.AddChild( lst );
app.AddLayout( lay );
}
function lst_OnTouch( item )
{
app.ShowPopup( "Touched Item = " + item );
}
====Example - Title + Body====
function OnStart()
{
lay = app.CreateLayout( "Linear", "VCenter,FillXY" );
var data = "The Hobbit:Author^c^ J.R.R. Tolkien:null";
data += ",Watership Down:Author^c^ Richard Adams:null";
lst = app.CreateList( data, 0.8, 0.4 );
lst.SetOnTouch( lst_OnTouch );
lay.AddChild( lst );
app.AddLayout( lay );
}
function lst_OnTouch( item )
{
app.ShowPopup( "Touched Item = " + item );
}
You can also create lists items that look like **buttons** by using one of the following options:
* "AlumButton"
* "GreenButton"
* "OrangeButton"
====Example - Orange Buttons====
function OnStart()
{
lay = app.CreateLayout( "Linear", "VCenter,FillXY" );
var data = "Button 1,Button 2,Button 3,Button 4";
lst = app.CreateList( data, 0.8, 0.8, "OrangeButton" );
lst.SetBackColor( "#ffffff" );
lst.SetPadding( 0.1, 0.1, 0.1, 0.1 );
lst.SetOnTouch( lst_OnTouch );
lay.AddChild( lst );
app.AddLayout( lay );
}
function lst_OnTouch( item )
{
app.ShowPopup( "Touched Item = " + item );
}
Or create lists with **Gradient** backgrounds like this:
====Example - Gradient Background====
function OnStart()
{
lay = app.CreateLayout( "Linear", "VCenter,FillXY" );
var data = "";
for( var i=1; i<=30; i++)
{
if( i>1 ) data += ",";
data += "Item "+i+":Details for item "+i+":null";
}
lst = app.CreateList( data, 1, 1, "WhiteGrad" );
lst.SetTextColor1( "#ff555558");
lst.SetTextColor2( "#ff555558" );
lst.SetTextMargins( 0.04, 0, 0, 0 );
lst.SetOnTouch( lst_OnTouch );
lay.AddChild( lst );
app.AddLayout( lay );
}
function lst_OnTouch( item )
{
app.ShowPopup( "Touched Item = " + item );
}
====Example - HTML Font Color====
function OnStart()
{
//Create a layout with objects vertically centered.
lay = app.CreateLayout( "linear", "VCenter,FillXY" );
//Create a list and add it to layout.
var data =
"Red,"+
"Green,"+
"Blue"
lst = app.CreateList( data,-1,-1,"html" );
lay.AddChild( lst );
//Add layout to app.
app.AddLayout( lay );
}
----
===== Methods =====
Some controls use the same methods.\\
For examples of the **[[same methods]]** look here.
^ Method ^ Description ^
| List.AddItem( title,body,image ) | |
| List.GetAbsHeight() | |
| List.GetAbsWidth() | |
| List.GetHeight() | |
| List.GetItemByIndex( index ) | |
| List.GetLength() | |
| List.GetList( delimeter ) | string = list.GetList(","); \\ List.GetList() with no params returns object list |
| List.GetPosition() | |
| List.GetTextSize( mode ) | |
| List.GetType() | |
| List.GetVisibility() | |
| List.GetWidth() | |
| List.InsertItem(index,title,body,image) | |
| List.RemoveAll() | |
| List.RemoveItem( title ) | |
| List.RemoveItemByIndex( index ) | |
| List.ScrollToItem( name,body ) | |
| List.ScrollToItemByIndex( index ) | |
| List.SelectItem( title,body,scrollTo ) | |
| List.SelectItemByIndex( index,scroll ) | index is a number, \\ scroll could be true or false |
| List.SetBackColor( colorCode ) | |
| List.SetBackGradient( color1,color2,color3,p4,p5,p6,p7 ) | |
| List.SetBackGradientRadial( x,y,r,color1,color2,color3,p7 ) | |
| List.SetBackground( imagefile,options ) | |
| List.SetDivider( height,color ) | |
| List.SetEllipsize( mode ) | |
| List.SetEllipsize1( mode ) | |
| List.SetEllipsize2( mode ) | |
| List.SetFontFile( file ) | |
| List.SetHiTextColor1( colorCode ) | |
| List.SetHiTextColor2( colorCode ) | |
| List.SetItem( title,newTitle,newBody,newImage ) | |
| List.SetItemByIndex( index,newTitle,newBody,newImage ) | |
| List.SetList( list,delimeter ) | |
| List.SetMargins( left,top,right,bottom ) | |
| List.SetOnLongTouch( callback ) | sets the function called when list is long-touched |
| List.SetOnTouch( callback ) | sets the function called when list is touched |
| List.SetPadding( left,top,right,bottom ) | |
| List.SetPosition( left,top,width,height ) | |
| List.SetScale( x,y ) | |
| List.SetSize( width,height ) | |
| List.SetTextColor( colorCode ) | |
| List.SetTextColor1( colorCode ) | |
| List.SetTextColor2( colorCode ) | |
| List.SetTextMargins( left,top,right,bottom ) | |
| List.SetTextShadow( radius,dx,dy,color ) | |
| List.SetTextShadow1( radius,dx,dy,color ) | |
| List.SetTextShadow2( radius,dx,dy,color ) | |
| List.SetTextSize( size,mode ) | |
| List.SetVisibility( ShowHide ) | |
===== Available Options =====
^ Option ^ Description ^
| AlumButton | Use this to display the list \\ as buttons |
| FontAwesome | Use this to display Icons \\ from this inbuilt font |
| GreenButton | Use this to display the list \\ as buttons |
| Html | Use this option to display html formated code |
| OrangeButton | Use this to display the list \\ as buttons |
| WhiteGrad | Use this to display the list \\ with a gradient background |
===== Sample callbacks =====
function lst_OnTouch( title, body, type, index )
{
app.ShowPopup( "id: " + title + " nick: " + body );
}
function lst_OnLongTouch( title, body, type, index )
{
app.ShowPopup( "id: " + title + " nick: " + body );
}
function lst_OnTouch( title, body, type, index )
{
//Shows the index of the touched item
app.ShowPopup(index)
}
function lst_OnTouch( item )
{
//Shows the touched item
app.ShowPopup(item)
}
----