Hola Johnny:
Parece que donde escribes te traduce a castellano automáticamente lo que escribes y las etiquetas CODE te las traduce a CÓDIGO y no se ve bien.
Como te ha indicado José Luis es una buena forma de acceder a los elementos de un CLV, digamos que la forma más genérica, porque vas accediendo a cada vista del CLV (recuerda que el orden de las vistas, es el orden que tienen en el diseñador.)
Por ejemplo, aquí, del pnlTitle, lblTitle sería la vista 0 (pnlTitle.Getview(0)), e ImageView1 la 1 (pnlTitle.Getview(1))
Es decir
View attachment 92110
Es muy útil en estos casos usar la propiedad Tag de los elementos.
Por ejemplo en este caso si en tu código haces:
Sub MostrarLista2
Dim Datos como lista
Clv1.Clear ()
Dim xui como XUI
Datos = mascota.SelectAll ("")
Para i = 0 a Datos.Size -1
Dim p As B4XView = xui.CreatePanel ("")
p.SetLayoutAnimated (0,0,0,100% x, 90dip)
p.LoadLayout ("Artículo")
Dim R como Mascota
R = Datos.Obtener (i)
Label1.Text = R.Id
Label2.Text = R.Nombre
Label3.Text = R.Edad
Label4.Text = R.Raza
p.Tag = R '<-------------------- Añades esta línea, y al Tag (etiqueta) de tu panel, le añade tu tipo Mascota
Clv1.Add (p, R) '<------------ Creo que si aquí, en vez de enviar solo el ID, envías el tipo entero, luego ya tienes todos sus valores cuando hagas click en el CLV)
próximo
End Sub
For i = 0 To clv.Size -1
Dim p As B4XView = clv.GetPanel(i)
If p.NumberOfViews > 0 Then
Dim R as Mascota = p.Tag 'Aquí ya tendrías todos los valores
Dim label As B4XView
label.text = R.id
end if
next
Si asignas como te puesto arriba tu objeto mascota en vez de sólo el ID, en el evento ItemClick podrías recuperar todos sus valores.
Sub CLV1_ItemClick (Index As Int, Value As Object)
Dim R as Mascota = Value
Log(R), ya aquí tendrías todos los valores para trabajar con ellos (R.Id, ....)
End Sub
End Sub