Hola amigos hace mcuho no ando por aca pero tengo algo que me esta superando.
Tengo una app que se basa en el ejemplo que dejo en este link https://www.b4x.com/android/forum/threads/ahviewpager-library-sliding-panels-now-perfect.14165/
El código que utilizo simplificado lo más posible es este >>>>
En este ejemplo se crean 3 pestañas y en el evento VP_PageChanged se crean 1 boton para la 1ra, 2 botones para la 2da y 3 para la 3ra.
Hastá ahi perfecto y puedo capturar los indices en panCustListCell_Click cambiando de pestaña y volviendo y yendo.
PERO EL PROBLEMA EN realidad es que cada vez que cambio de pestaña estas se redibujan y en este ejemplo son pocos botones y no tienen imágenes pero en el proyecto real sÍ se torna fea la vision y lenta.
He intentado crear las vistas moviendo todo el contenido de VP_PageChanged a VP_PageCreated y si bien se crean perfectamente las vistas y al mover de pestaña en pestaña es fluido el movimiento no captura los eventos correctamente y a veces lo hace y a veces no y no comprendo donde está el problema.
Ojalá me pueden entender y ayudar !!!
Muchas gracias
Tengo una app que se basa en el ejemplo que dejo en este link https://www.b4x.com/android/forum/threads/ahviewpager-library-sliding-panels-now-perfect.14165/
El código que utilizo simplificado lo más posible es este >>>>
B4X:
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("layout1")
PC.Initialize
For i = 0 To 2
Dim p As Panel
p.Initialize("")
p.Color = Colors.RGB(Rnd(0,256), Rnd(0,256), Rnd(0,256))
PC.AddPage(p, "Page " & i)
Next
VP.PageContainer = PC
Dim ac As AppCompat
TabLayout.Color = ac.GetThemeAttribute("colorPrimary")
'Conecte el TabLayout con el Viewpager. Esto mantendrá pestañas y páginas
'sincronizado y crea una buena animación de indicadores.
TabLayout.SetViewPager(VP)
End Sub
Sub VP_PageChanged (Position As Int)
Log("PageCreated: " & Position)
If Position=0 Then
Dim AltoBoton As Int
AltoBoton=(VP.Height ) - 2DIP
panActive = PC.GetPageObject(Position)
panActive.LoadLayout("custlv")
CustomListView1.Add(CreaItem( (1), CustomListView1.AsView.Width ,AltoBoton ), AltoBoton, 1)'
Else If Position=1 Then
Dim AltoBoton As Int
AltoBoton=(VP.Height / 2) - 2DIP
panActive = PC.GetPageObject(Position)
panActive.LoadLayout("custlv")
CustomListView1.Add(CreaItem( (1), CustomListView1.AsView.Width ,AltoBoton ), AltoBoton, 2)'
CustomListView1.Add(CreaItem( (2), CustomListView1.AsView.Width ,AltoBoton ), AltoBoton, 3)'
Else If Position=2 Then
Dim AltoBoton As Int
AltoBoton=(VP.Height / 3) - 2DIP
panActive = PC.GetPageObject(Position)
panActive.LoadLayout("custlv")
CustomListView1.Add(CreaItem( (1), CustomListView1.AsView.Width ,AltoBoton ), AltoBoton, 4)
CustomListView1.Add(CreaItem( (2), CustomListView1.AsView.Width ,AltoBoton ), AltoBoton, 5)
CustomListView1.Add(CreaItem( (3), CustomListView1.AsView.Width ,AltoBoton ), AltoBoton, 6)
End If
End Sub
Sub VP_PageCreated (Position As Int, Page As Object)
End Sub
'CREAMOS LO BOTONES DE LA PESTAÑAS
Sub CreaItem(index As Int, Width As Int, Height As Int) As Panel
Dim p As Panel
p.Initialize("")
Activity.AddView(p, 0, 0, Width, Height)
p.LoadLayout("CellBoton2")
Dim AC As AppCompat
p.Color= AC.GetThemeAttribute("colorPrimary")
p.RemoveView
lbTexto.Text="BOTON N° " & index
lbDetalle.Text="DETALLE N° " & index
Return p
End Sub
Sub VP_PageDestroyed (Position As Int, Page As Object)
Log("PageDestroyed: " & Position)
End Sub
Sub VP_PageScrolled (Position As Int, PositionOffset As Float, PositionOffsetPixels As Int)
Log("PageScrolled: " & Position & " Offset: " & PositionOffset & " OffsetPixels: " & PositionOffsetPixels)
End Sub
Sub VP_PageScrollStateChanged (State As Int)
Log("StateChange: " & State)
End Sub
Sub panCustListCell_Click
Dim index As Int = CustomListView1.GetItemFromView(Sender)
Msgbox ("INDEX",index)
End Sub
En este ejemplo se crean 3 pestañas y en el evento VP_PageChanged se crean 1 boton para la 1ra, 2 botones para la 2da y 3 para la 3ra.
Hastá ahi perfecto y puedo capturar los indices en panCustListCell_Click cambiando de pestaña y volviendo y yendo.
PERO EL PROBLEMA EN realidad es que cada vez que cambio de pestaña estas se redibujan y en este ejemplo son pocos botones y no tienen imágenes pero en el proyecto real sÍ se torna fea la vision y lenta.
He intentado crear las vistas moviendo todo el contenido de VP_PageChanged a VP_PageCreated y si bien se crean perfectamente las vistas y al mover de pestaña en pestaña es fluido el movimiento no captura los eventos correctamente y a veces lo hace y a veces no y no comprendo donde está el problema.
Ojalá me pueden entender y ayudar !!!
Muchas gracias