Un saludo a todos para empezar.
Este es mi problema, trato de volcar una consulta proveniente de un webservice a algo que se asemeje o se parezca a un control DataGridView pero no he encontrado nada ni un ejemplo que me permita al menos poder realizar lo que indico.
Necesitaría poder usar el TabHost para poner en cada uno de ellos un grid que se carguen las consultas que se realicen en dichos grid. He estado mirando ejemplos y reconozco que soy muy cortito porque no logro entender como hacerlo.
Lo único que tengo es la consulta en un listview modificado del ejemplo de Villalpando y ni se como poder añadir columnas y filas.
Agradecería un ejemplo claro si alguien domina este tema ya que no logro avanzar y mi intención es poder almacenar tanto en celdas como en variables cuando se selecciona una fila los valores de este tipo de consulta
Query="SELECT ID, codigo, denominación, familia, unds, pcio, importe FROM articulos ORDER BY ID"
Aquí os dejo el código hasta donde he llegado y gracias por molestaros en leer todo esto.
Sub Process_Globals
DimhcAsHttpClient
Dimcodigo, denominacionAsInt
codigo = 1' Es la tarea 1
denominacion = 2' Es la tarea 2
End Sub
Sub Globals
' Renglones puede contener dos renglones:
' Renglon1 (ES)
' Renglon2 (España)
TypeRenglones (Renglon1 AsString, Renglon2 AsString)
DimLabel1, Label2AsLabel
DimListView1AsListView
End Sub
Sub Activity_Create(FirstTime AsBoolean)
If FirstTime Then
hc.Initialize("hc")
EndIf
Activity.LoadLayout("1")
Buscar_lista_de_articulos
' Evita el error android.os.NetworkOnMainThreadException
' Activar librerías Phone y Reflection
Dim p AsPhone
If p.SdkVersion >= 9Then
Dim r AsReflector
r.Target = r.CreateObject("android.os.StrictMode$ThreadPolicy$Builder")
r.Target = r.RunMethod("permitAll")
r.Target = r.RunMethod("build")
r.RunStaticMethod("android.os.StrictMode", "setThreadPolicy", _
ArrayAsObject(r.Target), ArrayAsString("android.os.StrictMode$ThreadPolicy"))
EndIf
End Sub
Sub Buscar_lista_de_articulos
ProgressDialogShow("Buscando lista de articulos.")
Dim req AsHttpRequest
Dim Query AsString
Query="SELECT codigo, denominacion FROM articulos ORDER BY ID"
req.InitializePost2("http://localhost/dvcon.php", Query.GetBytes("UTF8"))
hc.Execute(req, codigo) '''''''' En ResponseSuccess hará el Case de CODIGO
End Sub
' Esta es la Respuesta de la orden hc.Execute
Sub hc_ResponseSuccess (Response AsHttpResponse, tarea AsInt)
Dim res AsString
res = Response.GetString("UTF8")
Log("Respuesta del servidor: " & res)
Dim parser AsJSONParser
parser.Initialize(res)
Select tarea
' ************* CODIGO *****************
Casecodigo
' Añade paises la ListView1
Dim articulos AsList
articulos.Initialize
articulos = parser.NextArray
For i = 0To articulos.Size - 1
Dim m AsMap
m = articulos.Get(i)
Dim Renglon AsRenglones
Renglon.Renglon1 = m.Get("codigo") ' ES
Renglon.Renglon2 = m.Get("denominacion") ' España
ListView1.AddTwoLines2(Renglon.Renglon1, Renglon.Renglon2, Renglon)
Next
ProgressDialogHide
' ************* DENOMINACION **************
Casedenominacion
Dim l AsList
l = parser.NextArray
If l.Size = 0Then
Label1.Text = "N/A"
Else
Dim m AsMap
m = l.Get(0)
Label1.Text = m.Get("codigo")
EndIf
EndSelect
Response.Release
End Sub
' Cuando pulsa en el ListView, busca en la BD del Servidor la denominacion
Sub ListView1_ItemClick (Position AsInt, Value AsObject)
IfIsBackgroundTaskRunning(hc, denominacion) Then' Está ocupado en llamada anterior.
ToastMessageShow("Espera hasta completar la llamada anterior.", False)
Return
EndIf
Dim Renglon AsRenglones
Renglon = Value
Label2.Text = Renglon.Renglon2
Label1.Text = "Conectando con el servidor"
Dim req AsHttpRequest
Dim Query AsString
Query="SELECT codigo, denominacion FROM articulos WHERE codigo='" & Renglon.Renglon1 & "'"
req.InitializePost2("http://localhost/dvcon.php", Query.GetBytes("UTF8"))
hc.Execute(req, denominacion) '''''''' En ResponseSuccess hará el Case de poblacion
End Sub
' Error en la conexión con la Base de datos.
Sub hc_ResponseError (Response AsHttpResponse, Reason AsString, StatusCode AsInt, tarea AsInt)
Log("Error: " & Reason & ", StatusCode: " & StatusCode)
If Response <> NullThen
Log(Response.GetString("UTF8"))
Response.Release
EndIf
ProgressDialogHide
End Sub
Este es mi problema, trato de volcar una consulta proveniente de un webservice a algo que se asemeje o se parezca a un control DataGridView pero no he encontrado nada ni un ejemplo que me permita al menos poder realizar lo que indico.
Necesitaría poder usar el TabHost para poner en cada uno de ellos un grid que se carguen las consultas que se realicen en dichos grid. He estado mirando ejemplos y reconozco que soy muy cortito porque no logro entender como hacerlo.
Lo único que tengo es la consulta en un listview modificado del ejemplo de Villalpando y ni se como poder añadir columnas y filas.
Agradecería un ejemplo claro si alguien domina este tema ya que no logro avanzar y mi intención es poder almacenar tanto en celdas como en variables cuando se selecciona una fila los valores de este tipo de consulta
Query="SELECT ID, codigo, denominación, familia, unds, pcio, importe FROM articulos ORDER BY ID"
Aquí os dejo el código hasta donde he llegado y gracias por molestaros en leer todo esto.
Sub Process_Globals
DimhcAsHttpClient
Dimcodigo, denominacionAsInt
codigo = 1' Es la tarea 1
denominacion = 2' Es la tarea 2
End Sub
Sub Globals
' Renglones puede contener dos renglones:
' Renglon1 (ES)
' Renglon2 (España)
TypeRenglones (Renglon1 AsString, Renglon2 AsString)
DimLabel1, Label2AsLabel
DimListView1AsListView
End Sub
Sub Activity_Create(FirstTime AsBoolean)
If FirstTime Then
hc.Initialize("hc")
EndIf
Activity.LoadLayout("1")
Buscar_lista_de_articulos
' Evita el error android.os.NetworkOnMainThreadException
' Activar librerías Phone y Reflection
Dim p AsPhone
If p.SdkVersion >= 9Then
Dim r AsReflector
r.Target = r.CreateObject("android.os.StrictMode$ThreadPolicy$Builder")
r.Target = r.RunMethod("permitAll")
r.Target = r.RunMethod("build")
r.RunStaticMethod("android.os.StrictMode", "setThreadPolicy", _
ArrayAsObject(r.Target), ArrayAsString("android.os.StrictMode$ThreadPolicy"))
EndIf
End Sub
Sub Buscar_lista_de_articulos
ProgressDialogShow("Buscando lista de articulos.")
Dim req AsHttpRequest
Dim Query AsString
Query="SELECT codigo, denominacion FROM articulos ORDER BY ID"
req.InitializePost2("http://localhost/dvcon.php", Query.GetBytes("UTF8"))
hc.Execute(req, codigo) '''''''' En ResponseSuccess hará el Case de CODIGO
End Sub
' Esta es la Respuesta de la orden hc.Execute
Sub hc_ResponseSuccess (Response AsHttpResponse, tarea AsInt)
Dim res AsString
res = Response.GetString("UTF8")
Log("Respuesta del servidor: " & res)
Dim parser AsJSONParser
parser.Initialize(res)
Select tarea
' ************* CODIGO *****************
Casecodigo
' Añade paises la ListView1
Dim articulos AsList
articulos.Initialize
articulos = parser.NextArray
For i = 0To articulos.Size - 1
Dim m AsMap
m = articulos.Get(i)
Dim Renglon AsRenglones
Renglon.Renglon1 = m.Get("codigo") ' ES
Renglon.Renglon2 = m.Get("denominacion") ' España
ListView1.AddTwoLines2(Renglon.Renglon1, Renglon.Renglon2, Renglon)
Next
ProgressDialogHide
' ************* DENOMINACION **************
Casedenominacion
Dim l AsList
l = parser.NextArray
If l.Size = 0Then
Label1.Text = "N/A"
Else
Dim m AsMap
m = l.Get(0)
Label1.Text = m.Get("codigo")
EndIf
EndSelect
Response.Release
End Sub
' Cuando pulsa en el ListView, busca en la BD del Servidor la denominacion
Sub ListView1_ItemClick (Position AsInt, Value AsObject)
IfIsBackgroundTaskRunning(hc, denominacion) Then' Está ocupado en llamada anterior.
ToastMessageShow("Espera hasta completar la llamada anterior.", False)
Return
EndIf
Dim Renglon AsRenglones
Renglon = Value
Label2.Text = Renglon.Renglon2
Label1.Text = "Conectando con el servidor"
Dim req AsHttpRequest
Dim Query AsString
Query="SELECT codigo, denominacion FROM articulos WHERE codigo='" & Renglon.Renglon1 & "'"
req.InitializePost2("http://localhost/dvcon.php", Query.GetBytes("UTF8"))
hc.Execute(req, denominacion) '''''''' En ResponseSuccess hará el Case de poblacion
End Sub
' Error en la conexión con la Base de datos.
Sub hc_ResponseError (Response AsHttpResponse, Reason AsString, StatusCode AsInt, tarea AsInt)
Log("Error: " & Reason & ", StatusCode: " & StatusCode)
If Response <> NullThen
Log(Response.GetString("UTF8"))
Response.Release
EndIf
ProgressDialogHide
End Sub