Tengo una vista de lista con un arrayadapter personalizado que maneja aproximadamente 15 cadenas. El estilo de cada fila se alterna (entre etiquetas y valores para esas etiquetas, por ejemplo, la fila 1 podría ser "dirección de correo electrónico" y la fila 2 sería la dirección de correo electrónico real). Estoy cambiando el estilo de cada fila para alternar de esta manera en el método getView() de arrayadapter. Entonces, si el elemento en la posición actual es una etiqueta, cambiaré el estilo del estilo de fila predeterminado (que es lo que los valores les han aplicado). Cuando la vista de lista se carga por primera vez, el diseño es perfecto y justo como quiero que sea. Si me desplazo lentamente hacia arriba o hacia abajo en la lista, sigue siendo así. Sin embargo, si desplazo rápidamente la lista hacia arriba y hacia abajo, el diseño de las filas de valores comienza a cambiar a la de las etiquetas hasta que todas las filas tengan el estilo de una fila de etiquetas. ¿Alguien sabe por qué esto estaría sucediendo? Utilicé adaptadores personalizados en otras listas de la aplicación sin problemas como este.Cuando desplazo una vista de lista con un adaptador personalizado demasiado rápido hacia arriba y hacia abajo, getView() comienza a comportarse de manera extraña. ¿Por qué?
Editar: Descubrí que también cambia todas las filas del estilo de la etiqueta en los cambios de orientación vertical-> horizontal. No hace esto en los cambios de paisaje-> retrato. Debajo está el adaptador que estoy usando. ¿Me estoy perdiendo de algo?
public class DetailsAdapter extends ArrayAdapter<String> {
private TextView text = null;
private String item = null;
public DetailsAdapter(Context context, int resource, int textViewResourceId, String[] objects) {
super(context, resource, textViewResourceId, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
text = (TextView) super.getView(position, convertView, parent);
item = getItem(position);
if (item.equals("Name") || item.equals("Mobile") || item.equals("Home") || item.equals("Email") || item.equals("Address")) {
text.setBackgroundColor(0xFF575757);
text.setTextSize(15);
text.setTypeface(null, Typeface.BOLD);
text.setPadding(8, 5, 0, 5);
} else {
text.setPadding(15, 15, 0, 15);
}
return text;
}
@Override
public boolean isEnabled(int position) {
item = getItem(position);
if (item.equals("Name") || item.equals("Mobile") || item.equals("Home") || item.equals("Email") || item.equals("Address")) {
return false;
} else {
return true;
}
}
}
¿Puedes mostrar tu código getView? –
Inicialmente, cuántas filas se presentarán cuando se cargue listview. Crear una vista para una fila usando el método getview de customadapter es una tarea que requiere mucha memoria. Esta es la razón de la representación desordenada de sus etiquetas. Escriba destellos de su código ... Podría ser que obtenga una solución –