Hello All,
I have been trying to crack this issue but can't.
I have a ScrollView and I'm loading a designer layout into the panel. The designer layout in turn contains a panel which contains the views I want to show, such as labels and a button.
I want to perform an action when the user either clicks the panel for each 'row' of panel items or when the button is clicked. I want to set the tag of the panel itself or the button to a value which i will use as a key to do something. When I use panel.getView to set the tag for the button, the code fails due an initialization error. I can't determine which item is unintialized as the panel item views were added in the designer.
I am at a loss as to how can such a simple requirement result be too difficult. Stuff like this is quite simple in Java(I have strong Java experience) but over here I seem to be missing something obvious and I can't figure it out. Can someone please look at the source below and let me know what I am missing.
I have been trying to crack this issue but can't.
I have a ScrollView and I'm loading a designer layout into the panel. The designer layout in turn contains a panel which contains the views I want to show, such as labels and a button.
I want to perform an action when the user either clicks the panel for each 'row' of panel items or when the button is clicked. I want to set the tag of the panel itself or the button to a value which i will use as a key to do something. When I use panel.getView to set the tag for the button, the code fails due an initialization error. I can't determine which item is unintialized as the panel item views were added in the designer.
I am at a loss as to how can such a simple requirement result be too difficult. Stuff like this is quite simple in Java(I have strong Java experience) but over here I seem to be missing something obvious and I can't figure it out. Can someone please look at the source below and let me know what I am missing.
B4X:
Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
Activity.LoadLayout("SavedMessages")
LoadMessages
End Sub
Sub LoadMessages
Dim keys As List = PA_Messaging_Service.MessageStore.ListKeys
Dim CurrentTop As Int = 0
ScrollContainer.Panel.Height = 120dip * keys.Size
Dim i As Int = 0
For Each Key As String In keys
Dim RowPanel As Panel = MakeRowPanelForKey(Key,CurrentTop,i)
RowPanel.LoadLayout("MessageItemLayout")
ChangeTagOfEditButton(RowPanel, Key)
CurrentTop = CurrentTop + 122dip
Next
End Sub
Sub ChangeTagOfEditButton(RowPanel As Panel, Key As String)
For i = 0 To RowPanel.NumberOfViews
Dim v As View = RowPanel.GetView(i)
If v.Tag = "EditButton" Then
v.Tag = Key
End If
Next
End Sub
Sub MakeRowPanelForKey(Key As String, CurrentTop As String, Index As Int) As Panel
Dim RowPanel As Panel
RowPanel.Initialize("HandleRowClick")
ScrollContainer.Panel.AddView(RowPanel, 0, CurrentTop, 100%x, 120)
RowPanel.Height = 120dip
RowPanel.Width = 100%x
RowPanel.Tag = Key
If Index Mod 2 = 0 Then
RowPanel.Color = Colors.LightGray
Else
RowPanel.Color = Colors.Black
End If
Return RowPanel
End Sub