====== 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) } ----