J'ai un listview avec un adaptateur de tableau personnalisé qui gère environ 15 chaînes. Le style de chaque ligne alterne (entre les étiquettes et les valeurs de ces étiquettes - par exemple, la ligne 1 pourrait être «adresse e-mail» et la ligne 2 serait l'adresse e-mail réelle). Je change le style de chaque ligne pour alterner comme cela dans la méthode getView() de arrayadapter. Donc, si l'élément à la position actuelle est une étiquette, je vais changer le style du style de ligne par défaut (qui est ce que les valeurs leur ont appliqué). Lorsque la liste est chargée, le style est parfait et je veux que ce soit le cas. Si je fais défiler la liste lentement vers le haut ou vers le bas, cela reste comme ça. Cependant, si je fais défiler la liste rapidement vers le haut et vers le bas, le style des lignes de valeur commence à changer pour celles des étiquettes jusqu'à ce que toutes les lignes aient le style d'une ligne d'étiquette. Est-ce que quelqu'un sait pourquoi cela se produirait? J'ai utilisé des adaptateurs personnalisés sur d'autres listes dans l'application sans problèmes comme celui-ci. Edit: Trouvé qu'il modifie également toutes les lignes au style d'étiquette sur les changements d'orientation portrait-> paysage. Ne fait pas cela sur les changements paysage-> portrait. Voici l'adaptateur que j'utilise. Est-ce que je manque quelque chose?Lorsque je fais défiler une liste avec un adaptateur personnalisé trop rapidement, getView() commence à se comporter bizarrement. Pourquoi?
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;
}
}
}
Pouvez-vous montrer votre code getView? –
Initialement, combien de lignes seront présentées lors du chargement de listview. La création d'une vue pour une ligne à l'aide de la méthode getview de customadapter est une tâche très gourmande en mémoire. C'est la raison du rendu brouillé de vos étiquettes. Écrire des aperçus de votre code .. Pourriez-vous obtenir une solution –