Spanish Obtener los datos de un panel al seleccionar un spinner

markfercho

New Member
Hola que tal a todos, tengo un proyecto el cual consiste en seleccionar los datos de un panel al momento de escoger cualquier opción de un spinner.
El detalle aqui es que tengo una clvLista(custom list view) y dentro de ella esta un panel, el cual contiene dentro una clv_exp_enbellecimientos(custom list view) que a su vez contiene un panel con varios campos, uno de ellos es un spinner, dejo una captura de pantalla para ver si puedo ayudar visualmente.


El cuadro marcado con rojo es clvLista.
1690839026704.png
cap1.png



Dentro de el tengo 2 paneles, al dar clic en pnlCardPF, estoy usando una libreria que me expande el panel seleccionado y me muestra pnlExpanded
1690838921240.png
1690839137042.png



Dentro de pnlExpanded tengo clv_exp_enbellecimientos en horizontal.
1690839296182.png
1690839365987.png



Al seleccionar del spinner me toma el valor del label "Pegado de Forro" y la cantidad seleccionada del spinner "2".
Y estos datos los agrego a una lista para despues generar un json y luego guardarlo en un label dentro de clvLista


El caso aqui es que necesito, poder seleccionar el spinner y obtener los datos del panel en el que se encuentra.
Hasta ahora he logrado hacerlo (adjunto mi codigo que me funciona), el detalle es que siempre me selecciona el primer panel ("Corte de Forro").

B4A:
Private Sub spnr_cant_subprocs_ItemClick (Position As Int, Value As Object)

    Dim index As Int = clvLista.GetItemFromView(Sender)
    
'    Dim idx As Int = clv_exp_enbellecimientos.GetItemFromView(Sender)
    
    Dim pnl1 As B4XView = clv_exp_enbellecimientos.GetPanel(index)
    
    Dim obtenerDato1 As String = pnl1.GetView(0).GetView(0).Text
    pnl1.GetView(0).GetView(2).Text = Value
    
    
    Dim MapaSubprocess2 As Map
    MapaSubprocess2.Initialize
    MapaSubprocess2.Put(obtenerDato1,Value)
    Dim JSON As JSONGenerator
    JSON.Initialize(MapaSubprocess2)
    Dim jsonText2 As String
    jsonText2 = JSON.ToString()
    
    clvLista.GetPanel(index).GetView(0).GetView(14).Text = jsonText2
    Log(clvLista.GetPanel(index).GetView(0).GetView(14).Text)

End Sub

Mi pregunta es: ¿Cómo puedo hacer que al seleccionar el spinner(no importa la seleccion), pueda obtener los datos del panel en el cual se encuentra el spinner?
No entiendo por que no puedo seleccionar un clv dentro de otro clv como lo muestro en el siguiente código
B4A:
Private Sub spnr_cant_subprocs_ItemClick (Position As Int, Value As Object)

    Dim index As Int = clvLista.GetItemFromView(Sender)
    
    Dim idx As Int = clv_exp_enbellecimientos.GetItemFromView(Sender)
    Dim pnl1 As B4XView = clv_exp_enbellecimientos.GetPanel(idx)
    
    Dim obtenerDato1 As String = pnl1.GetView(0).GetView(0).Text
    pnl1.GetView(0).GetView(2).Text = Value
    
    Dim MapaSubprocess2 As Map
    MapaSubprocess2.Initialize
    MapaSubprocess2.Put(obtenerDato1,Value)

    Dim JSON As JSONGenerator
    JSON.Initialize(MapaSubprocess2)
    Dim jsonText2 As String
    jsonText2 = JSON.ToString()
    
    clvLista.GetPanel(index).GetView(0).GetView(14).Text = jsonText2
    Log(clvLista.GetPanel(index).GetView(0).GetView(14).Text)
End Sub

Alguien que me pueda orientar o mejor aun tiene alguna otra forma de realizarlo se los agradeceria mucho!!
 

Attachments

  • 1690839339942.png
    1690839339942.png
    192.4 KB · Views: 74

josejad

Expert
Licensed User
Longtime User
Hola, la forma más fácil de ayudarte es que crees un pequeño proyecto reproduciendo tu layout y lo subas.

Saludos,
 
Upvote 0

EnriqueGonzalez

Well-Known Member
Licensed User
Longtime User
¿Cómo puedo hacer que al seleccionar el spinner(no importa la seleccion), pueda obtener los datos del panel en el cual se encuentra el spinner?
Esto es relativamente facil, hay un metodo que se llama parent que todos los views tienen. asi puedes agarrar el padre del spinner que seleccionaste.

No entiendo por que no puedo seleccionar un clv dentro de otro clv como lo muestro en el siguiente código
Dim index As Int = clvLista.GetItemFromView(Sender) Dim idx As Int = clv_exp_enbellecimientos.GetItemFromView(Sender) Dim pnl1 As B4XView = clv_exp_enbellecimientos.GetPanel(idx)
estas usando el mismo sender en 2 listview diferentes? Sender es siemrpe un solo view, no 2 o mas. probablemente por ahi va tu error.

Alguien que me pueda orientar o mejor aun tiene alguna otra forma de realizarlo se los agradeceria mucho!!
Intenga con Parent y corrige el Sender.

Hola, la forma más fácil de ayudarte es que crees un pequeño proyecto reproduciendo tu layout y lo subas.
Estoy de acuerdo con Jose, aunque lo explicas bien, no es facil decirte que estas 2 nodos atras de donde crees que estas sin debuggear.
 
Upvote 0
Top