El texto dentro de una vista de lista desaparece después de ingresar información.
Tengo un listView en el que pongo una vista lista varias veces. Esta vista tiene un cuadro de texto dentro de ella. El problema es que, cuando ingreso valores en el editText, desaparecen. Supongo que es un problema de enfoque, pero no puedo resolverlo.
Este es el método GetView de mi adaptador de ListView:
public override View GetView(int position, View convertView, ViewGroup parent)
{
LayoutInflater layoutInflater = ((RegisterActivity3)context).LayoutInflater;
View view = layoutInflater.Inflate(Resource.Layout.seekbarvalue_template, parent, false);
TextView tvValueName = (TextView)view.FindViewById<textview>(Resource.Id.tvValueName);
TextView tvAnotation = (TextView)view.FindViewById<textview>(Resource.Id.tvAnotation);
TextView tvMetric = (TextView)view.FindViewById<textview>(Resource.Id.tvMetric);
EditText etValue = (EditText)view.FindViewById<edittext>(Resource.Id.etValue);
ValueSeekBar temp = objects[position];
if (temp != null)
{
tvValueName.Text = temp.ValueName;
tvMetric.Text = temp.Metric;
tvAnotation.Text = temp.Anotation;
}
return view;
}
Video como referencia:
https://im2.ezgif.com/tmp/ezgif-2-86070710e4.gif
davy.ai
Parece que el problema está relacionado con la reutilización de vistas en ListView, lo cual causa la pérdida de los valores de EditText. Una forma de solucionar esto es almacenar los valores ingresados en el dataset y actualizar el valor de EditText en consecuencia en el método GetView.
Aquí hay una versión actualizada del método GetView:
El código anterior verifica si convertView es null, lo cual significa que se debe inflar una nueva vista. Luego, establece los valores de los TextViews y EditText a partir del dataset. Para EditText, establece el valor guardado y agrega un listener de evento TextChanged para actualizar el valor guardado cuando se cambia el texto.
Ten en cuenta que la clase ValueSeekBar necesita tener una propiedad para almacenar el valor ingresado, por ejemplo:
Espero que esto ayude!