' Process_Globals
Dim recipes as List
' Global
' Views from your layout file
Private JSListView1 As JSListView
Private ImageView1 As ImageView
Private Label1 As Label
Private Label2 As Label
' Activity Create
' Load your list, im using JSON file for this example
Dim js As JSONParser
js.Initialize(File.ReadString(File.DirAssets, "recipes.json"))
Dim m As Map = js.NextObject
recipes = m.Get("recipes")
' Set your data source
JSListView1.DataSource = recipes
' Use OnGetView to handle item layout
Sub JSListView1_OnGetView(position As Int, itemLayout As ItemViewLayout, forViewUpdate As Boolean)
Dim iv As ItemViewLayout = itemLayout
If forViewUpdate = False Then
' Load layout to panel (REQUIRED)
Dim p As Panel
p.Initialize("")
p.LoadLayout("TwoLineAndBitmap")
' assign this panel to ItemViewLayout (REQUIRED)
iv.Container = p
' since B4A doesn't use setID, will use tag instead
' tag is needed so set it (REQUIRED)
Label1.Tag = 1
Label2.Tag = 2
ImageView1.Tag = 3
' Custom adjustment on our layout
Label1.Width = 100%x - Label1.Left - 10dip
Label2.Width = 100%x - Label2.Left - 10dip
'
Label1.Typeface = Typeface.LoadFromAssets("JosefinSans-Bold.ttf")
Label2.Typeface = Typeface.LoadFromAssets("JosefinSans-SemiBoldItalic.ttf")
Label1.Gravity = Gravity.TOP
Label2.Gravity = Gravity.TOP
' Set the Width and Height of your item layout (ItemViewLayout) (REQUIRED)
iv.Height = ImageView1.Top + ImageView1.Height + 10dip
iv.Width = 100%x
' some more adjustment to our item
Label1.Height = 15dip
Label2.Top = Label1.Top + Label1.Height
Label2.Height = iv.Height - Label2.Top - 10dip
End If
' im using json
' get fields from recipes (json)
Dim mapper As Map = recipes.Get(position)
' get views (REQUIRED), else android will get confuse which view it is.
Label1 = iv.findViewWithTag(1)
Label2 = iv.findViewWithTag(2)
ImageView1 = iv.findViewWithTag(3)
' set data
Label1.Text = mapper.Get("title")
Label2.Text = mapper.Get("description")
' load image from web
Dim picaso As Picasso
picaso.Initialize
picaso.LoadUrl(mapper.Get("image")).Resize(ImageView1.Width,ImageView1.Height).CenterCrop.IntoImageView(ImageView1)
End Sub