Spanish [SOLUCIONADO]Problemas para capturar el Evento de un ITEM dentro de un CustomListView

desof

Well-Known Member
Licensed User
Longtime User
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 >>>>

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
 

bgsoft

Well-Known Member
Licensed User
Longtime User

desof

Well-Known Member
Licensed User
Longtime User
Hola

Sin ver todo el código es dificil de ver el problema, has probado de crear esos botones en el layout? así al no tener que crearlos la carga será mas rápida.

Te has mirado esta libreria de Erel? :
https://www.b4x.com/android/forum/threads/tabstripviewpager-better-viewpager.63975/#content

Es mas reciente que la que tu empleas, y quizas te funcione mejor, ademas implementarla es fácil


Saludos

Sí ayer justamente estuve mirando esa opción y queria tratar de evitar cambiar eso. Pero creo que lo voy a hacer.

Gracias amigo
 
Top