#Region Shared Files
#CustomBuildAction: folders ready, %WINDIR%\System32\Robocopy.exe,"..\..\Shared Files" "..\Files"
'Ctrl + click to sync files: ide://run?file=%WINDIR%\System32\Robocopy.exe&args=..\..\Shared+Files&args=..\Files&FilesSync=True
#End Region
'Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=CLVExample.zip
Sub Class_Globals
Private Root As B4XView
Private xui As XUI
Private clv2 As CustomListView
Private dd As DDD
End Sub
Public Sub Initialize
End Sub
Private Sub B4XPage_Created (Root1 As B4XView)
Root = Root1
dd.Initialize
xui.RegisterDesignerClass(dd)
Root.LoadLayout("MainPage")
For i = 1 To 20
clv2.Add(CreateListItem($"Item test test test test #${i}"$, clv2.AsView.Width, 60dip), $"Item #${i}"$)
Next
End Sub
Private Sub CreateListItem(Text As String, Width As Int, Height As Int) As B4XView
Dim p As B4XView = xui.CreatePanel("")
p.SetLayoutAnimated(0, 0, 0, Width, Height)
p.LoadLayout("CellItem")
'Note that we call DDD.CollectViewsData in CellItem designer script. This is required if we want to get views with dd.GetViewByName.
dd.GetViewByName(p, "Label1").Text = Text
Return p
End Sub
Private Sub clv2_ItemClick(Index As Int, Value As Object)
Log(Index & " = " & Value)
End Sub
Private Sub CheckBox1_CheckedChange(Checked As Boolean)
Dim index As Int = clv2.GetItemFromView(Sender)
Dim pnl As B4XView = clv2.GetPanel(index)
Dim chk As B4XView = dd.GetViewByName(pnl, "CheckBox1")
Dim checkedItems As List
checkedItems.Initialize
For i = 0 To clv2.GetSize - 1
Dim chk As B4XView = dd.GetViewByName(clv2.GetPanel(i), "CheckBox1")
If chk.Checked Then
checkedItems.Add(clv2.GetValue(i))
End If
Next
Log("Checked items: " & checkedItems)
Sleep(500)
End Sub