Spanish [SOLUCIONADO]SelectedItem de Spiner NO devuelve el Texto Seleccionado

dhernandez

Active Member
Licensed User
Longtime User
Buen dia a todos, un saludo.
Como bien lo dice el titulo, tengo un Spinner que alimento con los nombres de los archivos que hay dentro de la carpeta DirAssets, me muestra la lista con los nombres de los archivos correctamente.
AL tratar de usar esos nombres para copiar ese archivo en un servidor FTP, me marca el siguiente error
B4X:
libcore.io.ErrnoException: open failed: EISDIR (Is a directory)
.
Verifique todo y puse un Log asi.
B4X:
Log(SPinner1.SelectedItem)
y me sale
B4X:
AssetsDir/
, no me arrastra el texto que aparece en el Spinner, alguna idea de cómo reolver esto.

Gracias de antemano.
 

dhernandez

Active Member
Licensed User
Longtime User
Agrego La lista desde DirAssets de esta manera:
B4X:
Spinner1.AddAll(File.ListFiles(File.DirAssets))
Y cuando lo quiero usar, lo hago de la siguiente manera:
B4X:
FTP.UploadFile(File.DirAssets, "/" & Spinner1.SelectedItem, True, "/VideoCursos" & "/" & Spinner1.SelectedItem)
 

GeoT

Active Member
Licensed User
Hola dhernandez.

¿Utilizas el evento

B4X:
Sub Spinner1_ItemClick (Position As Int, Value As Object)
    
    Log(Spinner1.SelectedItem)
End Sub

?

¿Creaste antes si no existe el directorio File.DirRootExternal & "/VideoCursos" , por ejemplo?
 

dhernandez

Active Member
Licensed User
Longtime User
Gracias por tu respuesta @GeoT lo probe de manera distinta
B4X:
Log(Spinner1.SelectedItem)
y me devuelve "AssetsDir". Hice lo que me Indicas y me Sale lo mismo en el Log "AssetsDir/".
La Carpeta de "/VideoCursos" es en el servidor FTP y existe, ahi está bien.
Hice tambien lo Siguiente:
B4X:
Spinner1.AddAll(Array As String(File.DirAssets))
Y ahora me agrega en la lista del Spinner Sólo: AssetsDir

Me estoy estresando jejeje, tal vez la solucion sea mas sencilla, pero no la encuentro.
Gracias
 

josejad

Expert
Licensed User
Longtime User
Hola:

¿Puedes crear un pequeño proyecto sólo con un spinner y haciendo lo que indicas a ver dónde está el problema?
Acabo de hacer un ejemplo tal y como indicas que lo tienes, y me funciona bien, devuelve el nombre del archivo.

saludos,
 

Seneca

Active Member
Licensed User
Hola.

Yo también he creado un ejemplo y me funciona correctamente. Sube por FTP el archivo que seleccione en el spinner.

Saludos.

B4X:
Sub Globals
    Private Spinner1 As Spinner
    Dim ftp As FTP
End Sub

Sub Activity_Create(FirstTime As Boolean)
    ftp.Initialize("ftp", "servidor.com", 21, "usuario", "clave")
    Activity.LoadLayout("Layout1")
    Spinner1.AddAll(File.ListFiles(File.DirAssets))
End Sub

Sub Spinner1_ItemClick (Position As Int, Value As Object)
    Log(Spinner1.SelectedItem)
    ftp.UploadFile(File.DirAssets, "/" & Spinner1.SelectedItem, True, "/" & Spinner1.SelectedItem)
End Sub
 

dhernandez

Active Member
Licensed User
Longtime User
Gracias a los dos por sus comentarios. Aqui pongo el codigo del boton de Subir Archivos.

B4X:
Sub btnEjecutar_Click
    Spinner1.Clear
    'INDICAMOS EL ARCHIVO A SUBIR, EL DIRECTORIO DONDE SE ENCUENTRA Y LA RUTA DE DESTINO DENTRO DEL SERVIDOR FTP
    FTP.UploadFile(File.DirAssets, "/" & Spinner1.SelectedItem, True, "/VideoCursos" & "/" & Spinner1.SelectedItem)
    Log(Spinner1.SelectedItem)
    Log(File.DirAssets & "/" & Spinner1.SelectedItem)
    Log("/VideoCursos" & "/" & Spinner1.SelectedItem)
 
End Sub

Mi Carpeta en el Servidor FTP se llama VideoCursos

Aparte le agregué el evento al Spinner del ItemClick
B4X:
Sub Spinner1_ItemClick (Position As Int, Value As Object)
    Log(Spinner1.SelectedItem)
End Sub

Aqui en al seleccionar un valor Si me muestra en el log El nombre correcto del archivo.
 

dhernandez

Active Member
Licensed User
Longtime User
Aqui una Imagen de los resultados de los Logs.
Como Vemos el BANNER_CYM.png, se genera del evento ItemClick del Spinner(Está Correctamente).
El Siguiente Log, Muestra AssetDir y es del Log(Spinner1.SelectedItem) (Ya no es Correcto éste Valor)
 

Attachments

  • Captura de pantalla 2018-12-03 a la(s) 11.05.31.png
    Captura de pantalla 2018-12-03 a la(s) 11.05.31.png
    338.2 KB · Views: 270

josejad

Expert
Licensed User
Longtime User
Sin llegar a probar nada, ¿por qué limpias el Spinner antes de ejecutar el código?
No sé si haciendo un Spinner1.Clear después te devolverá algún valor el Spinner1.SelectedItem
Prueba a comentarla o ponerla al final.
 

dhernandez

Active Member
Licensed User
Longtime User
Sabía que era un Error tonto de mi parte. NO me había percado de ello, Spinner1.Clear, era el del problema, borraba el nombre del archivo, aunque no entiendo porqué, pues limpio el spinner antes de cargar los valores, creo yo que no debería de comportarse asi.
Gracias por tu acertada Respuesta @José J. Aguilar
 
Top