Estimados les comparto este pequeño código, que les servirá para generar una lista con datos que quieran mostrar, la lista la pueden personalizar a su gusto, también pueden refrescar la lista, esto lo deben adaptar según su necesidad.
Link librerias.
CustomListView
CardView
AHSwipeToRefresh
Versión de Código: 0.2
Nuevo:
* Al llegar al final de la lista carga nuevos Items o nuevos Registros, Item predeterminados son 10, Esto es lo mas Parecido a RecyclerView que he podido llegar.
* Librería CustomListView v1.75 esta incluida en .bas dentro del ejemplo completo que dejare adjunto.
Con el aporte de todos podemos llegar a algo mejor, dejen sus comentarios y aportes.
Saludos.
Link librerias.
CustomListView
CardView
AHSwipeToRefresh
Versión de Código: 0.2
Nuevo:
* Al llegar al final de la lista carga nuevos Items o nuevos Registros, Item predeterminados son 10, Esto es lo mas Parecido a RecyclerView que he podido llegar.
* Librería CustomListView v1.75 esta incluida en .bas dentro del ejemplo completo que dejare adjunto.
B4X:
Sub Process_Globals
Dim tm As Timer
Dim n_item As Long
Dim min_item As Long
Dim ultimo_item As Long
End Sub
Sub Globals
Private CustomList As CustomListView 'I believe in the designer LayoutMain
Private CardView As CardView 'I believe in the designer LayoutCellItem
Dim STR As AHSwipeToRefreshMulti 'I believe in the designer LayoutMain
Private PanelListView As Panel 'I believe in the designer LayoutMain
Dim RV As RippleView
Private LabelVermas As Label 'I believe in the designer LayoutMscard
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("LayoutMain")
PanelListView.RemoveView
STR.AddView(PanelListView)
'STR.SetColorScheme2(Array As Int (Colors.Red, Colors.Blue, Colors.Green, Colors.Cyan, Colors.Magenta, Colors.Yellow))
STR.SetColorScheme2(Array As Int (Colors.rgb(192,202,51)))
ProgressDialogShow2("Cargando, espere...", False)
n_item = 10
min_item = 1
ultimo_item = 1
Dim l As List
l.Initialize
l.Add(CustomList.AsView)
STR.SwipeableChilden = l
CargaLista
End Sub
Sub CreateListItem(Text As String, Width As Int, Height As Int) As Panel
Dim p As Panel
p.Initialize("")
'we need to add the panel to a parent to set its dimensions. It will be removed after the layout is loaded.
Activity.AddView(p, 0, 0, Width, Height)
p.LoadLayout("LayoutCellItem")
CardView.LoadLayout("LayoutMscard")
RV.Initialize(LabelVermas, Colors.LightGray, 200, True)
p.RemoveView
Return p
End Sub
Sub CargaLista
Sleep(500)
For i = min_item To n_item
CustomList.Add(CreateListItem($"Item #${i}"$, CustomList.AsView.Width, 270dip), 282dip, $"Item #${i}"$)
Next
ProgressDialogHide
min_item = n_item
End Sub
Sub CustomList_ReachEnd
Log("reach end")
ultimo_item = 2
STR.Refreshing = True
STR_Refresh
End Sub
Sub STR_Refresh
Log("Refresh started")
'Start the timer. Normally you will start your asynchronous job here
tm.Initialize("Timer", 2000)
tm.Enabled = True
'Disable the STR object so we can not start a new refresh process
STR.Enabled = True
End Sub
'The timer tick simulates the end of the refreshing process
Sub Timer_Tick
Log("Refresh stopped")
'Stop Timer and refresh the listview data
tm.Enabled = False
If ultimo_item == 2 Then 'Agrega nuevos item
n_item = n_item + 10
min_item = min_item + 1
Log("Item a Agregar: " & n_item)
Else 'Recarga Lista
CustomList.Clear
min_item = 1
End If
ultimo_item = 1
CargaLista
'Stop the spinning disc and enable the STR object again.
STR.Refreshing = False
STR.Enabled = True
End Sub
Sub LabelVermas_Click
Dim index As Int = CustomList.GetItemFromView(Sender)
ToastMessageShow("Checked items: " & CustomList.GetValue(index), False)
End Sub
Sub CardView_Click
' Dim index As Int = CustomList.GetItemFromView(Sender)
' ToastMessageShow("Checked items: " & CustomList.GetValue(index), False)
End Sub
Con el aporte de todos podemos llegar a algo mejor, dejen sus comentarios y aportes.
Saludos.
Last edited: