Hola.
Quiero publicar en un ScrolView una serie de informaciones (noticias) que tengo alojadas en una base de datos. Cada noticia se compone de un Título y un Texto.
Para ello he creado mediante el designer un panel, que a su vez contiene un label "Título" y otro label "Texto". Posteriormente voy publicando en el ScrollView una copia de este panel por cada una de las noticias.
Añadido a esto quiero que el usario pueda aumentar o reducir el tamaño de fuente con sendos botones. Esto lo hago de manera que, tras pulsar el botón correspondiente, voy recorriendo mediante un bucle todos los views contenidos dentro del panel del SV y a aquellos que son un Label, les indico que ha de aumentarse el tamaño de la fuente.
Adjunto un ejemplo, donde he sustituido la carga de datos desde una BD, por un método provisional.
Este ejemplo me funciona correctamente, pero lo que quiero consultar a los que tenéis más experiencias que yo es si el método usado (tanto para publicar las noticias en el SV, como la modificación posterior del tamaño de fuente a demanda del usuario) es adecuado. Me pregunto si sería mejor usar una Clase. Me cuesta trabajo descubrir en qué casos he de usar una Clase para conseguir determinado objetivo.
Gracias.
(Reconozco que el título quizás sea poco descriptivo para lo que consulto)
Quiero publicar en un ScrolView una serie de informaciones (noticias) que tengo alojadas en una base de datos. Cada noticia se compone de un Título y un Texto.
Para ello he creado mediante el designer un panel, que a su vez contiene un label "Título" y otro label "Texto". Posteriormente voy publicando en el ScrollView una copia de este panel por cada una de las noticias.
Añadido a esto quiero que el usario pueda aumentar o reducir el tamaño de fuente con sendos botones. Esto lo hago de manera que, tras pulsar el botón correspondiente, voy recorriendo mediante un bucle todos los views contenidos dentro del panel del SV y a aquellos que son un Label, les indico que ha de aumentarse el tamaño de la fuente.
Adjunto un ejemplo, donde he sustituido la carga de datos desde una BD, por un método provisional.
Este ejemplo me funciona correctamente, pero lo que quiero consultar a los que tenéis más experiencias que yo es si el método usado (tanto para publicar las noticias en el SV, como la modificación posterior del tamaño de fuente a demanda del usuario) es adecuado. Me pregunto si sería mejor usar una Clase. Me cuesta trabajo descubrir en qué casos he de usar una Clase para conseguir determinado objetivo.
Gracias.
(Reconozco que el título quizás sea poco descriptivo para lo que consulto)
B4X:
Sub Activity_Create(FirstTime As Boolean)
scvInformaciones.Initialize(0)
lstInformaciones.Initialize
btSubeFuente.Initialize("btsubefuente")
btSubeFuente.Text = "Sube"
' lstInformaciones = DBUtils.ExecuteMemoryTable(Starter.sql, "SELECT titulo, texto FROM informaciones WHERE id_inf= ?", Array As String ("ab12"), 0)
' Por simplificar este ejemplo, la carga de los datos desde una base de datos (linea anterior)
' la he sustituido por las 4 líneas siguientes
strContenido = Array As String("Título", "Texto ejemplo. Texto ejemplo. Texto ejemplo. Texto ejemplo. Texto ejemplo. Texto ejemplo. ")
For n = 1 To 10
lstInformaciones.Add(strContenido)
Next
Activity.AddView(scvInformaciones, 0, 0, 100%x, 90%y) 'Scroll para alojar las informaciones (noticias)
Activity.AddView(btSubeFuente, 0, 90%y, 100%x, 10%y) 'Botón para subir fuente
Dim UnaInformacion() As String
' Publicación en el ScrollView de 10 copias del Layout "muestra_informaciones"
For Numero = 0 To lstInformaciones.Size - 1
' "muestra_informaciones" es un panel que contiene 2 Label
scvInformaciones.Panel.LoadLayout("muestra_informaciones")
pnlInformacion.Top = Numero * (pnlInformacion.Height + 4dip)
' Extrae del List el contenido de una Información a publicar
UnaInformacion = lstInformaciones.get(Numero)
lblTitulo.Text = UnaInformacion(0)
lblInformacion.Text = UnaInformacion(1)
Next
scvInformaciones.Panel.Height = lstInformaciones.Size * (pnlInformacion.Height + 4dip)
End Sub
Sub btSubeFuente_click
For Each vw As View In scvInformaciones.Panel.GetAllViewsRecursive
If vw Is Label Then
subefuente (vw)
End If
Next
End Sub
Sub subefuente (vw As Label)
vw.TextSize = vw.Textsize + 1
End Sub
Attachments
Last edited: