Obter valor de lista e retornar em label

Pessoal,

Estou com uma duvida sobre como retornar as informações de uma lista em um label, da seguinte forma:

Lista
Nome1
Nome2
Nome3

Clicando sobre um item da lista (Ex: Nome 1), jogar as informações consultadas desse registro, no label.
Da forma que fiz, não deu certo, pois, o label retorna sempre a última informação, independente de qual registro eu marcar.

Obs: Estou utilizando CustomListView

Segue código abaixo:


Sub ConsultarBanco

ListView_Profissionais.Clear
Dim encontrou As String
encontrou = ""

Panel4_Inform.Visible = True
Label_Contato.Visible = True
Label_Email.Visible = True
Label_Telefone.Visible = True
Label_Profissao.Visible = True

valorTexto = EditText_Pesquisar.Text
Dim query As String = "SELECT * FROM Profissional WHERE Nome_Profissional like ?"
Dim rs As ResultSet = SQL1.ExecQuery2(query, Array As String("%" &valorTexto & "%"))
Do While rs.NextRow
'Log(rs.GetString("Funcao_Profissional"))
ListView_Profissionais.AddTextItem(rs.GetString("Nome_Profissional"), "Texto")

Label_Profissao.Text = rs.GetString("Funcao_Profissional")
Label_Telefone.Text = rs.GetString("Telefone_Profissional")
Label_Email.Text = rs.GetString("Email_Profissional")
encontrou = "S"

For i = 0 To rs.RowCount
Label_Profissao.Text = rs.GetString("Funcao_Profissional")
Next
Loop

If (encontrou = "") Then
MsgboxAsync("Nenhum profissional encontrado!","Mensagem")
End If
rs.Close
End Sub
 
Pessoal, por favor, teriam alguma sugestão?
Fiz alguns exemplos que encontrei aqui no fórum, mas, não consegui chegar no resultado esperado.


Segue abaixo evento de click da lista

Sub ListView_Profissionais_ItemClick (Position As Int, Value As Object)
Panel4_Inform.Visible = True
Label_Contato.Visible = True
Label_Email.Visible = True
Label_Telefone.Visible = True
'Label_Profissao.Visible = True

'Dim index As Int = ListView_Profissionais.GetItemFromView(Sender)
'Dim pnl As B4XView = ListView_Profissionais.GetPanel(index)
'Dim lbl As B4XView = pnl.GetView(0)
'Dim chk As B4XView = pnl.GetView(2)
'lbl.Text = "Ok"
'Msgbox("Item value: " & clv2.GetValue(index) & CRLF & "Check value: " & chk.Checked, "")
Dim checkedItems As List
checkedItems.Initialize
For i = 0 To ListView_Profissionais.GetSize - 1
'Dim p As B4XView = ListView_Profissionais.GetPanel(i)
'Dim chk As B4XView = p.GetView(2)
'If chk.Checked Then
checkedItems.Add(ListView_Profissionais.GetValue(i))
'End If
Next
Log("Checked items: " & checkedItems)


End Sub
 

Lucas Siqueira

Active Member
Licensed User
Longtime User
Pessoal,

Estou com uma duvida sobre como retornar as informações de uma lista em um label, da seguinte forma:

Lista
Nome1
Nome2
Nome3

Clicando sobre um item da lista (Ex: Nome 1), jogar as informações consultadas desse registro, no label.
Da forma que fiz, não deu certo, pois, o label retorna sempre a última informação, independente de qual registro eu marcar.

Obs: Estou utilizando CustomListView

Segue código abaixo:


Sub ConsultarBanco

ListView_Profissionais.Clear
Dim encontrou As String
encontrou = ""

Panel4_Inform.Visible = True
Label_Contato.Visible = True
Label_Email.Visible = True
Label_Telefone.Visible = True
Label_Profissao.Visible = True

valorTexto = EditText_Pesquisar.Text
Dim query As String = "SELECT * FROM Profissional WHERE Nome_Profissional like ?"
Dim rs As ResultSet = SQL1.ExecQuery2(query, Array As String("%" &valorTexto & "%"))
Do While rs.NextRow
'Log(rs.GetString("Funcao_Profissional"))
ListView_Profissionais.AddTextItem(rs.GetString("Nome_Profissional"), "Texto")

Label_Profissao.Text = rs.GetString("Funcao_Profissional")
Label_Telefone.Text = rs.GetString("Telefone_Profissional")
Label_Email.Text = rs.GetString("Email_Profissional")
encontrou = "S"

For i = 0 To rs.RowCount
Label_Profissao.Text = rs.GetString("Funcao_Profissional")
Next
Loop

If (encontrou = "") Then
MsgboxAsync("Nenhum profissional encontrado!","Mensagem")
End If
rs.Close
End Sub


Altere a linha de ListView_Profissionais.AddTextItem para passar no campo value o id do profissional.
ListView_Profissionais.AddTextItem(rs.GetString("Nome_Profissional"), rs.GetInt("Id_Profissional") )

Inclua o evento ItemClick para você recuperar o valor passado no AddTextItem
Sub ListView_Profissionais_ItemClick (Index As Int, Value As Object)
Msgbox("Index: "&Index & CRLF & "Value: " & Value , "Oiii")
End Sub
 
Top