Spanish [SOLUCIONADO]B4A-Como identificar un elemento de ListView inequívocamente

ferpahud

Active Member
Licensed User
Hola buenos dias, retomo una vieja duda que tuve, y es como identificar un elemento de un listview, el cual fue presionado, pero hacerlo de forma inequivoca.

Por ejemplo, necesito almacenar el id de un registro en el listview, pero no mostrarlo, el codigo es el siguiente:
B4X:
Sub listarComercios
    c=s.ExecQuery("SELECT id_comercio,comercio,direccion,imagen FROM comercios WHERE comercios.id_rubro='" & Main.rubroElegido & "'")
    ListView1.Clear
   
    If c.RowCount>0 Then
    For i=0 To c.RowCount-1
        c.Position=i
        ListView1.AddTwoLinesAndBitmap(c.GetString("comercio"), c.GetString("direccion"),LoadBitmap(File.DirAssets,c.GetString("imagen")))
    Next
    End If
End Sub
Cuando ejecuto el metodo ListView1_ItemClick, 'value' guarda el primer elemento de la fila de casa posición , en este caso "comercio" es un nombre de comercio, un string, y no es la PK de la tabla de comercio, por lo que la misma puede ser repetida, lo que podria ocacionar un problema al buscar la información de ese comercio y querer mostrarla en una nueva pantalla. Yo necesito que 'value' almacene el id del comercio presionado, para asi poder mostrar en una nueva pantalla mas datos sobre dicho comercio.
En este caso ejecuto el metodo con un Toast para ver el valor de 'value'
B4X:
Sub ListView1_ItemClick (Position As Int, Value As Object)
    ToastMessageShow(Value,True)
End Sub
Alguien sabe como hacerlo?
 

rscheel

Well-Known Member
Licensed User
Longtime User
Hola buenos dias, retomo una vieja duda que tuve, y es como identificar un elemento de un listview, el cual fue presionado, pero hacerlo de forma inequivoca.

Por ejemplo, necesito almacenar el id de un registro en el listview, pero no mostrarlo, el codigo es el siguiente:
B4X:
Sub listarComercios
    c=s.ExecQuery("SELECT id_comercio,comercio,direccion,imagen FROM comercios WHERE comercios.id_rubro='" & Main.rubroElegido & "'")
    ListView1.Clear
  
    If c.RowCount>0 Then
    For i=0 To c.RowCount-1
        c.Position=i
        ListView1.AddTwoLinesAndBitmap(c.GetString("comercio"), c.GetString("direccion"),LoadBitmap(File.DirAssets,c.GetString("imagen")))
    Next
    End If
End Sub
Cuando ejecuto el metodo ListView1_ItemClick, 'value' guarda el primer elemento de la fila de casa posición , en este caso "comercio" es un nombre de comercio, un string, y no es la PK de la tabla de comercio, por lo que la misma puede ser repetida, lo que podria ocacionar un problema al buscar la información de ese comercio y querer mostrarla en una nueva pantalla. Yo necesito que 'value' almacene el id del comercio presionado, para asi poder mostrar en una nueva pantalla mas datos sobre dicho comercio.
En este caso ejecuto el metodo con un Toast para ver el valor de 'value'
B4X:
Sub ListView1_ItemClick (Position As Int, Value As Object)
    ToastMessageShow(Value,True)
End Sub
Alguien sabe como hacerlo?

Espero te sirva, saludos.

B4X:
ListView1.AddTwoLinesAndBitmap2("","",LoadBitmap(), id_registro)
 
Top