Tengo un elemento de lista con EditText, no sé cuántos elementos habrá. Tengo un problema cuando ingreso un texto en EditText, y luego me desplazo hacia abajo en un ListView, después de volver a desplazarme hacia arriba no hay texto en mi primer EditText, o hay texto de EditText en ListView.EditText pierde contenido en desplazamiento en ListView
He intentado con TextWatcher y guardo datos en una matriz, pero hay problemas porque la posición de vista devuelta en ListView no siempre es correcta, así que perdí algunos datos de la matriz. -.-
Cómo detectar la posición correcta de la vista en ListView?
Por ejemplo:
Si tengo 10 elementos en ListView, y sólo 5 de ellos son actualmente visibles. Posición de retorno del adaptador de 0 a 4 ... eso está bien. Cuando me desplazo hacia abajo, la posición del elemento 6 es 0 ... wtf? y pierdo datos de la matriz en la posición 0 :)
Estoy usando ArrayAdapter.
Por favor ayuda.
Aquí hay algo de código:
public View getView(int position, View convertView, ViewGroup parent) {
tmp_position = position;
if (convertView == null) {
holder = new ViewHolder();
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.element_in_game, null);
holder.scoreToUpdate = (EditText) convertView
.findViewById(R.id.elementUpdateScore);
holder.scoreToUpdate.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
scoresToUpdate[tmp_position] = s.toString();
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
initScoresToUpdateEditTexts(holder.scoreToUpdate, hint);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
holder.scoreToUpdate.setText(scoresToUpdate[tmp_position]);
}
return convertView;
}
no funciona para mí? – DPM
Anand, hola, estoy teniendo el mismo problema ahora, probé la solución en tu código pero aparentemente no puedo hacer que funcione, ¿cómo puedo actualizar datos específicos en el arraylist dependiendo del texto de edición –
@PankajNimgade, para mí esto funciona: http://stackoverflow.com/a/21404201/2914140. Dentro de 'holder.scoreToUpdate.setOnFocusChangeListener (...' write: if (! HasFocus) {scoresToUpdate [position] = holder.scoreToUpdate.getText(). ToString();} – CoolMind