I have a listview with a list of items. There is an event that sends the new value for a given row of the listview. For example: I have a listview with the names ("Jhon", "Alice", "Paul", "Mary", "Stive") then the event me "warns" that the name of Jhon was changed to "Josh". How can I access the online listview containing the name "Jhon", I am using adapter and viewholder to populate the listview.
using System;
using Android.App;
using Android.Views;
using Android.Widget;
using MyApp
using Android.Content;
using System.Collections.Generic;
using Android.Graphics;
public class AdapterContatos : BaseAdapter
{
private Activity _Activity = null;
private static Usuario[] _ListaContatos;
private static Grupo[] _Listagrupos;
private static List<Object> _ListaCompleta = new List<object>();
private static LayoutInflater _Inflate = null;
private static View _View;
private static Dictionary<int, Bitmap> _DicAvatarContato = new Dictionary<int, Bitmap>();
private static Dictionary<int, Bitmap> _DicAvatarGrupo = new Dictionary<int, Bitmap>();
public AdapterContatos(Activity activity, Usuario[] listaContatos, Grupo[] listaGrupo)
{
_Activity = activity;
_ListaContatos = listaContatos;
_Listagrupos = listaGrupo;
_ListaCompleta.AddRange(_Listagrupos);
_ListaCompleta.AddRange(_ListaContatos);
try
{
_Inflate = (LayoutInflater)_Activity.GetSystemService(Context.LayoutInflaterService);
foreach (var item in _ListaContatos)
ObtemImagemArredondadaContato(item.Codigo);
foreach (var item in _Listagrupos)
ObtemImagemArredondadaGrupo(item.CodigoDoGrupo);
}
catch (Exception ex)
{
UtilExcessao.TrateExcessao(ex);
}
}
ViewHolderContato _HolderContato;
public override View GetView(int position, View convertView, ViewGroup parent)
{
_View = convertView;
try
{
if (_View != null)
_HolderContato = _View.Tag as ViewHolderContato;
else
{
_View = _Activity.LayoutInflater.Inflate(Resource.Layout.LayoutContato, null);
_HolderContato = CriaViewHolder(position);
}
PopulaViewHolder(_HolderContato, position);
_View.Tag = _HolderContato;
}
catch (Exception ex)
{
UtilExcessao.TrateExcessao(ex);
}
return _View;
}
private ViewHolderContato CriaViewHolder(int position)
{
ViewHolderContato holder = new ViewHolderContato();
holder.txtNome = _View.FindViewById<TextView>(Resource.Id.nomeContato);
holder.txtCargo = _View.FindViewById<TextView>(Resource.Id.funcaoContato);
holder.imgAvatar = _View.FindViewById<ImageView>(Resource.Id.imgAvatar);
holder.txtPrimeiraLetraNomeOuGrupo = _View.FindViewById<TextView>(Resource.Id.txtPrimeiraLetraNomeOuGrupo);
holder.txtQntdMsgNaoLidas = _View.FindViewById<TextView>(Resource.Id.imgAlertaChat);
return holder;
}
private void PopulaViewHolder(ViewHolderContato holder, int position)
{
if(EhGrupo(_ListaCompleta[position]))
PopulaViewHolderGrupo(holder,
(Grupo)_ListaCompleta[position]);
else
PopulaViewHolderUsuario(holder,
(Usuario)_ListaCompleta[position]);
}
void PopulaViewHolderGrupo(ViewHolderContato holder, Grupo grupo)
{
holder.txtNome.Text = grupo.NomeDoGrupo;
holder.txtCargo.Text = UtilFormatacao.ObtenhaNomeIntegrantesGrupoFormatado(grupo.ListaDeUsuarios);
holder.txtPrimeiraLetraNomeOuGrupo.Text = UtilFormatacao.ObtenhaPrimeiraLetraDoNome(grupo.NomeDoGrupo);
MostraAvatargrupo(holder, grupo.CodigoDoGrupo, grupo.NomeDoGrupo);
}
void PopulaViewHolderUsuario(ViewHolderContato holder, Usuario usuario)
{
holder.txtNome.Text = usuario.Nome;
holder.txtCargo.Text = usuario.Cargo;
MostraAvatarContatoPrivado(holder, usuario.Codigo, usuario.Nome);
}
void MostraAvatarContatoPrivado(ViewHolderContato holder, int codigo, string nome)
{
if (_DicAvatarContato[codigo] != null)
{
holder.imgAvatar.SetImageBitmap(_DicAvatarContato[codigo]);
holder.txtPrimeiraLetraNomeOuGrupo.Text = "";
}
else
{
holder.imgAvatar.SetImageResource(Resource.Drawable.icon_avatar_default_52);
holder.txtPrimeiraLetraNomeOuGrupo.Text = UtilFormatacao.ObtenhaPrimeiraLetraDoNome(nome);
}
}
void MostraAvatargrupo(ViewHolderContato holder, int codigoGrupo, string nomeGrupo)
{
if (_DicAvatarGrupo[codigoGrupo] != null)
{
holder.imgAvatar.SetImageBitmap(_DicAvatarGrupo[codigoGrupo]);
holder.txtPrimeiraLetraNomeOuGrupo.Text = "";
}
else
{
holder.imgAvatar.SetImageResource(Resource.Drawable.icon_avatar_default_52);
holder.txtPrimeiraLetraNomeOuGrupo.Text = UtilFormatacao.ObtenhaPrimeiraLetraDoNome(nomeGrupo);
}
}
private void ObtemImagemArredondadaContato(int codigo)
{
using (var bmp = UtilImagem.ObtemImagemArredondado(UtilImagem.ObtemImagemLocalContato(codigo), 60, 80, 80))
{
_DicAvatarContato.Add(codigo, bmp);
}
}
private void ObtemImagemArredondadaGrupo(int codigoGrupo)
{
using (var bmp = UtilImagem.ObtemImagemArredondado(UtilImagem.ObtemImagemLocalGrupo(codigoGrupo), 60, 80, 80))
{
_DicAvatarGrupo.Add(codigoGrupo, bmp);
}
}
public bool EhGrupo(Object objeto)
{
return object.Equals(objeto.GetType(),
typeof(Grupo));
}
private int ObtenhaCodigoGrupoOuUsuario(int position)
{
if (EhGrupo(_ListaCompleta[position]))
{
Grupo G = (Grupo)_ListaCompleta[position];
return G.CodigoDoGrupo;
}
else
{
Usuario U = (Usuario)_ListaCompleta[position];
return U.Codigo;
}
}
public void AdicionaNovoContato(Usuario usario)
{
}
public void RemoveContato(Usuario usuario)
{
}
public void AdicionaNovoGrupo(Grupo grupo)
{
}
public void RemoveGrupo(Grupo grupo)
{
}
public override int GetItemViewType(int position)
{
return base.GetItemViewType(position);
}
public int GetCount()
{
return _ListaCompleta.Count;
}
public override Java.Lang.Object GetItem(int position)
{
return ObtenhaCodigoGrupoOuUsuario(position);
}
public Object ObtenhaTipoObjeto(int position)
{
return _ListaCompleta[position];
}
public Grupo ObtenhaGrupoDaLista(int codigo)
{
foreach (var item in _Listagrupos)
{
if (item.CodigoDoGrupo == codigo)
return item;
}
return null;
}
public override long GetItemId(int position)
{
return ObtenhaCodigoGrupoOuUsuario(position);
}
public override int Count
{
get { return _ListaCompleta.Count; }
}
private class ViewHolderContato : Java.Lang.Object
{
public TextView txtNome { get; set; }
public TextView txtCargo { get; set; }
public TextView txtPrimeiraLetraNomeOuGrupo { get; set; }
public ImageView imgAvatar { get; set; }
}
}