Spanish Cambiar lista elementos de spinner

angel_

Active Member
Licensed User
Estoy tratando de carga unos spinner (Spinner2, Spinner3, Spinner4) en función del valor del Spinner1, pero después seleccionar más de dos veces el valor del Spinner1 ya no me cambia ningún valor del resto de los spinner, he probado de varias formas como se puede ver en el ejemplo pero no consigo que funcione.

B4X:
Sub Spinner1_ItemClick (Position As Int, Value As Object)
    Dim ListaTemp As List
    Dim ListaTemp2 As List
    
    ListaTemp.Initialize
    ListaTemp2.Initialize
    m1.ListaTempGlobal.Initialize
    
    If Spinner1.SelectedItem = "Lista2" Then
        ListaTemp = m1.List2
        ListaTemp2.AddAll(m1.List2)
        m1.ListaTempGlobal = m1.List2
    Else
        ListaTemp = m1.List3
        ListaTemp2.AddAll(m1.List3)
        m1.ListaTempGlobal = m1.List3
    End If
    
    Spinner2.Clear
    Spinner2.AddAll(ListaTemp)
    Spinner2.SelectedIndex = 0
    
    Spinner3.Clear
    Spinner3.AddAll(m1.ListaTempGlobal)
    Spinner3.SelectedIndex = 0
    
    Spinner4.Clear
    Spinner4.AddAll(ListaTemp2)
    Spinner4.SelectedIndex = 0
End Sub
 

Attachments

Jorge M A

Well-Known Member
Licensed User
No estoy en la computadora ahora para probar, pero mientras intenta poner un Sleep(0) inmediatamente despues de cada SelectedIndex=0
 
Hola para iniciar debes poner esta linea en el Activity_Create:

B4X:
 m1.ListaTempGlobal.Initialize
Ya que estas inicializando varias veces inncesariamente.

Por otro lado, si ya estas dentro de
Sub Spinner1_ItemClick (Position As Int, Value As Object)

Puedes usar Value para obtener el valor seleccionado en vez de usar:

B4X:
If Spinner1.SelectedItem = "Lista2" Then
Usa esto:

B4X:
If Value = "Lista2" Then
 

angel_

Active Member
Licensed User
¿Alguna idea de dónde está el error al utilizar List en lugar de Array?
 

musaso

Member
Licensed User
Prueba asi, a mi me funciona

B4X:
    If Spinner1.SelectedItem = "Lista2" Then
        'ListaTemp = m1.List2
        ListaTemp.AddAll(m1.List2)
        ListaTemp2.AddAll(m1.List2)
        'm1.ListaTempGlobal = m1.List2
        m1.ListaTempGlobal.AddAll(m1.List2)
        'ListaTemp3 = m1.Array2
        ListaTemp3.AddAll(m1.Array2)
    Else
        'ListaTemp = m1.List3
        ListaTemp.AddAll(m1.List3)
        ListaTemp2.AddAll(m1.List3)
        'm1.ListaTempGlobal = m1.List3
        m1.ListaTempGlobal.AddAll(m1.List3)
        'ListaTemp3 = m1.Array3
        ListaTemp3.AddAll(m1.Array3)
    End If
 
Top