Spanish [SOLUCIONADO] Cargar datos en ListView

Discussion in 'Spanish Forum' started by TheArkhangel, Mar 10, 2015.

  1. TheArkhangel

    TheArkhangel Member Licensed User

    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
     
  2. Xicu

    Xicu Member Licensed User

  3. TheArkhangel

    TheArkhangel Member Licensed User

    Gracias por responder Xicu, se que no es muy ortodoxo pero habría alguna forma de que me mostrases el ejemplo pero con mi código ? No pretendo que me hagan el trabajo.....es únicamente para poder COMPRENDER como uso el flexible listview dentro de mi código con mi consulta y a partir de ahí poder seguir.

    Viéndolo es más sencillo entenderlo que con el ejemplo y gracias aunque no sea posible por molestarte en ayudar.
     
  4. TheArkhangel

    TheArkhangel Member Licensed User

    Necesitaría si alguien sabe y puede, un ejemplo hecho con mi consulta para entender como cargar los datos que recojo de una consulta y volcarlos a variables para luego insertarlo en un listview con formato de tabla (tabular se entiende) y así poder seleccionar la fila que me interese. Esta es la consulta que realizo a mysql mediante webservice

    Sub Buscar_lista_de_articulos
    ProgressDialogShow("Buscando lista de articulos.")
    Dim req AsHttpRequest
    Dim Query AsString
    Query="SELECT fecha, ID, codigo, denominación, unds, precio, importe FROM articulos ORDER BY fecha"
    req.InitializePost2("http://localhost/dvcon.php", Query.GetBytes("UTF8"))
    hc.Execute(req, codigo) '''''''' En ResponseSuccess hará el Case de CODIGO
    End Sub

    Quizás así sea mas sencillo de entender que todo el rollo del principio y gracias al foro por la ayuda.
     
  5. TheFalcon

    TheFalcon Active Member Licensed User

    Te faltaría creo ya que el Mysql lo tengo parado ahora mismo el Response:

    No me hagas mucho caso pero creo que una cosa así te puede orientar

    Code:
    Sub hc_ResponseSuccess (Response As HttpResponse, tarea As Int)
    Dim res As String
    res = Response.GetString(
    "UTF8")
    Log("Respuesta del servidor: " & res)

    Dim parser As JSONParser
    parser.Initialize(res)

    Select tarea

    Case artículos


    Dim Lista_articulos As List
    Lista_articulos.Initialize
    Lista_ articulos = parser.NextArray
    For i = 0 To Lista_ articulos.Size - 1
    Dim m As Map
    m = Lista_ articulos.Get(i)

    dim fecha as string
    dim ID as int

    fecha = m.Get(
    "fecha")
    ID = m.Get("ID")   
      

    Next
    ProgressDialogHide
    End select
    Response.Release

    End sub
     
    TheArkhangel likes this.
  6. TheArkhangel

    TheArkhangel Member Licensed User

    Gracias por la respuesta TheFalcon, ahora solo me queda saber como asignarlo a un listview de forma tabular y que al seleccionar los datos se guarden en variables para volcarlos a otro listview
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice