Did you have a look at the
Table Class ?
All'inizio della mia avventura con B4A (20 gg fa) tra le varie opzioni per gestire i dati di SQLITE scelsi quella di usare lo scrollview con il pannello (
http://www.b4x.com/android/forum/threads/scrollview-layouts-and-getting-current-selected.8546). Non so se è stata la soluzione migliore, ma non è stato particolarmente complesso da capire. Di seguito un po' di codice per i posteri.
Sub popola_elenco
swelenco.RemoveView
swelenco.Initialize(1000)
Activity.AddView(swelenco, 20dip, 175dip, 95%x, 90%y)
strquery = "SELECT inventario.id, articoli.codart, articoli.descrizione, inventario.qta, inventario.flg_elimina FROM inventario LEFT JOIN articoli ON inventario.codart = articoli.codart ORDER BY inventario.id"
dbCursor = dbSql.ExecQuery(strquery)
For i = 0 To dbCursor.RowCount - 1
DoEvents
dbCursor.position = i
stcol1 = dbCursor.GetString("articoli.codart")
stcol2 = dbCursor.GetString("articoli.descrizione")
stcol3 = dbCursor.GetString("inventario.qta")
'Dim pnl As Panel
pnl.Initialize("pnl_elenco")
swelenco.Panel.AddView(pnl, 0, 5dip + i * PanelHeight, 100%x, PanelHeight)
pnl.LoadLayout("line_elenco")
pnl.Tag = dbCursor.GetInt("inventario.id")
For n = 0 To pnl.NumberOfViews - 1
pnl.GetView(n).Tag = i
Next
Dim pline As Panel
lbcodice = pnl.GetView(0)
lbcodice.Text = stcol1
lbdesc = pnl.GetView(1)
lbdesc.Text = stcol2
lbqta = pnl.GetView(2)
lbqta.Text = stcol3
ColoreNonSelezione
pline = pnl.GetView(3)
pline.Width = pnl.Width
Next
PanelNb = dbCursor.RowCount + 5
swelenco.Panel.Height = PanelNb*PanelHeight
dbCursor.Close
End Sub
Sub ColoreSelezione
pnl.Color = Colors.Cyan
End Sub
Sub ColoreNonSelezione
pnl.Color = Colors.LightGray
End Sub
Sub pnl_elenco_LongClick
' tolgo il colore di selezione dalla riga precedente
ColoreNonSelezione
'coloro la riga seleziona in ciano
pnl = Sender
ColoreSelezione
LeggiRigaSelezionata
etcodice.Text = dbCursor.GetString("articoli.codart")
etdesc.Text = dbCursor.GetString("articoli.descrizione")
etqta.Text = dbCursor.GetString("inventario.qta")
dbCursor.Close
modifica = True
End Sub
Sub LeggiRigaSelezionata
strquery = "SELECT inventario.id, articoli.codart, articoli.descrizione, inventario.qta, inventario.flg_elimina FROM inventario LEFT JOIN articoli ON inventario.codart = articoli.codart WHERE inventario.id = '" & pnl.Tag & "'"
dbCursor = dbSql.ExecQuery(strquery)
dbCursor.position = 0
id_corrente = dbCursor.GetString("inventario.id")
End Sub