Spanish [SOLUCIONADO] Grilla para datos, con Scroll Horizontal..

vbmundo

Well-Known Member
Licensed User
Hola,

Vengo usando la Flexible Grid del usuario Klaus, pero la misma tiene severas fallas tuve que quitarla de 2 activities..

Pero hay una Activity de mi App donde no puedo prescindir de la grilla, ya que ahí vuelca el resultado de las consultas SQL de los usuarios.. por la cual no tengo forma de saber de antemano, cuantas columnas y filas poseerá.

La Libreria del usuario Klaus es muy buena en cuanto que las columnas se adaptan (en tamaño) al largo de los datos... (algo que no vi en las otras)..

Pero tiene fallas al scrolear verticalmente los datos y en el evento Click

Esta es la grilla (para que no me la recomienden)
https://www.b4x.com/android/forum/threads/class-flexible-table.30649/

Alguna idea ? Gracias
 

rscheel

Well-Known Member
Licensed User
Longtime User
Hola,

Vengo usando la Flexible Grid del usuario Klaus, pero la misma tiene severas fallas tuve que quitarla de 2 activities..

Pero hay una Activity de mi App donde no puedo prescindir de la grilla, ya que ahí vuelca el resultado de las consultas SQL de los usuarios.. por la cual no tengo forma de saber de antemano, cuantas columnas y filas poseerá.

La Libreria del usuario Klaus es muy buena en cuanto que las columnas se adaptan (en tamaño) al largo de los datos... (algo que no vi en las otras)..

Pero tiene fallas al scrolear verticalmente los datos y en el evento Click

Esta es la grilla (para que no me la recomienden)
https://www.b4x.com/android/forum/threads/class-flexible-table.30649/

Alguna idea ? Gracias

Estimado probo con CustomListView?
 

vbmundo

Well-Known Member
Licensed User
Estuve viendo algo del CustomListView

Pero solo tiene lineas horizontales.. y necesito algo con forma de grilla.. que queden las celdas marcadas.

Saludos
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Pablo

Puedes probar con el ScrollView2D

Saludos
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Pablo:

La Libreria del usuario Klaus es muy buena en cuanto que las columnas se adaptan (en tamaño) al largo de los datos... (algo que no vi en las otras)..

Pero tiene fallas al scrolear verticalmente los datos y en el evento Click

Creo que si tienes algo y no te funciona, tendras que emplear algo que si, yo utilizo el ScrollView2D y no tengo ningún problema. Otra opción es exponerle a Klaus los problemas que tienes y que te de una solución.

Saludos
 

vbmundo

Well-Known Member
Licensed User
Amigo

Fijate en esto

https://www.b4x.com/android/forum/threads/class-flexible-table.30649/

ve a los ultimos POSTs...

Hasta le puse videos donde con el Debug.. le demuestro que su Control tiene fallas.. y me dice

"Has un proyecto de pruebas y enviamelo"

Y le digo... y eso que cambia ?

Yo ahora creo un proyecto de prueba y me funciona... pero en mi aplicación... sin que yo modifique ni 1 sola linea de código de su Control... da fallas...

Realmente me ha demorado mas de 10 días con esto... ya estaría con mi APP en Google Play.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Bienvenido al B4A!!! :D , yo tambien al principio me llevé muchos cabreos por que preguntaba una cosa y me respondian con otra, con los servicios tuve una buena pelea (dialectica) con varios expertos, y al final nadie me dio una solucion.
Conclusion, me busco la vida cuando tengo un problema y pregunto en muy raras ocasiones, por que por lo visto hago preguntas raras dificiles de responder :D . Pero hay una parte positiva en esto como en todo, me puse a ayudar a la gente de este foro para que al menos en la medida de lo que se, de esa forma no se desesperaran como yo al principio.

Saludos
 

vbmundo

Well-Known Member
Licensed User
jajja..

Además me parece un insulto a la inteligencia, que me pida un pequeño proyecto de prueba..

TE ESTOY DEMOSTRANDO CON VIDEOS QUE TIENE UNA FALLA !!!

Tengo 4 betatesters que me reportaron los mismos errores... como que no es mi movil ni nada parecido..

Lo he probado en moviles y en tablets...

Tomo el .BAS así como me lo das.. y lo pongo.. no le he cambiado ni una coma.

Los datos los muestra... sino podría ser que los lleno mal.

Haces click y se desata el infierno.

En cuanto a las dinámicas de los foros... si amigo.. tengo un foro con mas de 100.000 usuarios.. se que es complicado..

Un abrazo
 

rscheel

Well-Known Member
Licensed User
Longtime User
jajja..

Además me parece un insulto a la inteligencia, que me pida un pequeño proyecto de prueba..

TE ESTOY DEMOSTRANDO CON VIDEOS QUE TIENE UNA FALLA !!!

Tengo 4 betatesters que me reportaron los mismos errores... como que no es mi movil ni nada parecido..

Lo he probado en moviles y en tablets...

Tomo el .BAS así como me lo das.. y lo pongo.. no le he cambiado ni una coma.

Los datos los muestra... sino podría ser que los lleno mal.

Haces click y se desata el infierno.

En cuanto a las dinámicas de los foros... si amigo.. tengo un foro con mas de 100.000 usuarios.. se que es complicado..

Un abrazo

Estimado, puede que la falla este en su código, ya que yo he usado la misma librería y no tuve ningún problema, quizás la manera de cargar los datos en tiempo de ejecución, revisado en la bd que no este cargando repetidamente los datos o que al rotar la pantalla este guardando doblemente los datos para llenar la lista?
 

vbmundo

Well-Known Member
Licensed User
Estimado, puede que la falla este en su código, ya que yo he usado la misma librería y no tuve ningún problema, quizás la manera de cargar los datos en tiempo de ejecución, revisado en la bd que no este cargando repetidamente los datos o que al rotar la pantalla este guardando doblemente los datos para llenar la lista?

Amigo, si te fijas en los videos que le he subido al dueño del control.. verás que los datos de origen estan perfectos.. de hecho.. los muestra bien..

Pero internamente esa Clase, graba en un LIST llamado DATA, los datos.. .pero llena esa lista con la misma info , una y otra vez..

Esas rutinas de llenado no son mias.. son del Control

Yo solo hago un ADDROW con la tabla de valores.

Saludos
 

rscheel

Well-Known Member
Licensed User
Longtime User
Amigo, si te fijas en los videos que le he subido al dueño del control.. verás que los datos de origen estan perfectos.. de hecho.. los muestra bien..

Pero internamente esa Clase, graba en un LIST llamado DATA, los datos.. .pero llena esa lista con la misma info , una y otra vez..

Esas rutinas de llenado no son mias.. son del Control

Yo solo hago un ADDROW con la tabla de valores.

Saludos

LIST llamado DATA es Globals o Process_Globals
 

vbmundo

Well-Known Member
Licensed User
Se ha creado todo un tema de controversias..

Aparentemente , (aun no lo he probado para decir si funciona o no) el problema, segun Klaus y DonManfred plantean,. está dado en mi código porque lleno un ARRAY con info nueva una y otra vez..

Es decir... al elemento (1) del ARRAY le muevo un valor. y luego... (ya que esta en un FOR NEXT) le muevo otro valor a la posicion (1).

Acaso cuando crean un vector, deben hacerle un DIM cada vez que quieran moverle nueva info ?

Es absurdo, no lo entiendo.. y si es así es un BUG del lenguaje de programación.

mi código es este

B4X:
        For i = 0 To data.Size-1
            mm=data.Get(i)
            Log(mm.GetValueAt(0))
            For ii = 0 To mm.Size-1
                Campos(ii)=mm.GetValueAt(ii)
            Next
            G.AddRowAutomaticWidth(Campos)
        Next

Donde CAMPOS es un ARRAY definido fuera del FOR NEXT, con un DIM...

Ellos proponen esto

B4X:
        For i = 0 To data.Size-1
            mm=data.Get(i)
            Log(mm.GetValueAt(0))
            Dim Campos(m.size) as String
            For ii = 0 To mm.Size-1
                Campos(ii)=mm.GetValueAt(ii)
            Next
            G.AddRowAutomaticWidth(Campos)
        Next

Es ridículo, aun no lo pruebo, lo probaré cuando salga de la oficina y llegue a casa, pero me parece medio ridículo esto.

Sería el primer lenguaje de programación en el que me pide que redeclare nnn veces el mismo ARRAY para moverle info nueva...

que opinan ?
 

rscheel

Well-Known Member
Licensed User
Longtime User
Se ha creado todo un tema de controversias..

Aparentemente , (aun no lo he probado para decir si funciona o no) el problema, segun Klaus y DonManfred plantean,. está dado en mi código porque lleno un ARRAY con info nueva una y otra vez..

Es decir... al elemento (1) del ARRAY le muevo un valor. y luego... (ya que esta en un FOR NEXT) le muevo otro valor a la posicion (1).

Acaso cuando crean un vector, deben hacerle un DIM cada vez que quieran moverle nueva info ?

Es absurdo, no lo entiendo.. y si es así es un BUG del lenguaje de programación.

mi código es este

B4X:
        For i = 0 To data.Size-1
            mm=data.Get(i)
            Log(mm.GetValueAt(0))
            For ii = 0 To mm.Size-1
                Campos(ii)=mm.GetValueAt(ii)
            Next
            G.AddRowAutomaticWidth(Campos)
        Next

Donde CAMPOS es un ARRAY definido fuera del FOR NEXT, con un DIM...

Ellos proponen esto

B4X:
        For i = 0 To data.Size-1
            mm=data.Get(i)
            Log(mm.GetValueAt(0))
            Dim Campos(m.size) as String
            For ii = 0 To mm.Size-1
                Campos(ii)=mm.GetValueAt(ii)
            Next
            G.AddRowAutomaticWidth(Campos)
        Next

Es ridículo, aun no lo pruebo, lo probaré cuando salga de la oficina y llegue a casa, pero me parece medio ridículo esto.

Sería el primer lenguaje de programación en el que me pide que redeclare nnn veces el mismo ARRAY para moverle info nueva...

que opinan ?

Tu tienes un for dentro de otro for y ambos for dan la misma cantidad de vueltas, te duplica los datos por que el primer for da una vuelta y el segundo hace el llenado del arreglo con los datos, luego el primer for da una vuelta mas y el otro for vuelve a agregar los mismos registros al arreglo por eso te aparece duplicado. Como te han dicho es error de tu codigo.
 

vbmundo

Well-Known Member
Licensed User
Tu tienes un for dentro de otro for y ambos for dan la misma cantidad de vueltas, te duplica los datos por que el primer for da una vuelta y el segundo hace el llenado del arreglo con los datos, luego el primer for da una vuelta mas y el otro for vuelve a agregar los mismos registros al arreglo por eso te aparece duplicado. Como te han dicho es error de tu codigo.

No amigo, no has comprendido el código.

el primer FOR Itera por cada registro del ResulSet ( o como lo llamen en Java).

el segundo FOR itera dentro de un ROW , extrayendo cada campo devuelto..

el método AddRowAutomaticWidth se alimenta de un Array con los Campos.. y eso es lo que se forma en el segundo FOR.

Es muy probable que sea mi código el problema, pero no por haberlo hecho mal, sino porque evidentemente B4A tiene cosas extrañas. no se explica como me sugieren que cree con un DIM dentro del FOR, el Array, cada vez que leo un registro... no tiene ni pies ni cabeza... y no lo he usado así en ninguno de los lenguajes de programación que utilizo.

Saludos
 

vbmundo

Well-Known Member
Licensed User
Te pongo aquí el código con comentarios para que lo comprendas

B4X:
For i = 0 To data.Size-1    ' Itero por cada ROW devuelto en la consulta SQL
            mm=data.Get(i)            ' Creo un MAP con el registro (i)
            Log(mm.GetValueAt(0))
            Dim Campos(m.size) as String    ' esta es la opción que me hicieron adicionar y creo que es un error de toda lógica
            For ii = 0 To mm.Size-1            ' Itero dentro del ROW, por cada campo que lo compone... si el ROW tiene 5 campos, iterará 5 veces moviendo sus valores a el Array Campos
                Campos(ii)=mm.GetValueAt(ii)
            Next
            G.AddRowAutomaticWidth(Campos)   ' Adiciono el ARRAY campos como registro de la Grilla
        Next
 

vbmundo

Well-Known Member
Licensed User
Increiblemente ha funcionado...

Y no acepto que me digan que era mi código.. no tengo 26 años en el desarrollo de Software para que me quieran convencer de que se debe declarar un ARRAY n veces para poder moverle valores... no tiene lógica alguna.

es como que me digan que cada vez que necesites asignarle un valor a una variable debes declararla una y otra vez.. algo tan tonto como esto

B4X:
Dim A as String

A="Hola"

Dim A as String

A="Mundo"

Se me dice que un ARRAY de 5 elementos, debe ser redefinido nuevamente con 5 elementos y ahi moverle valores...

Una locura...

Que funcione modificando mi código no significa que yo lo haya hecho mal..

Disculpen pero esta INCONSISTENCIA del Lenguaje me ha costado 2 semanas de dolores de cabeza.
 
Top