J'ai créé un ArrayAdapter personnalisé pour afficher des données dans des éléments ListView à partir d'un tableau de structures de données et pour une raison quelconque, lorsque je défile très rapidement, l'affichage va faire des choses étranges.Les éléments ListView ne sont pas actualisés correctement
Voici ma fonction getView de l'ArrayAdapter personnalisé. Ma première supposition serait à cause de la si (d.highTemp! = Null) est à la traîne ou quelque chose? Ce que je veux que l'adaptateur fasse est seulement d'afficher un highTemp si la structure de données a une valeur dedans. Sinon, il devrait afficher la valeur lowTemp; La liste est correcte lorsque d'abord dessiné mais si je fais défiler de haut en bas très vite, il affiche les valeurs élevées et lowTemp même si je sais que chaque structure de données n'a qu'un seul de ceux-là! = Null ...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.list_item, null);
}
DaysWeather d = daysWeather[position];
if (d != null) {
TextView tt = (TextView) v.findViewById(R.id.toptext);
TextView bt = (TextView) v.findViewById(R.id.bottomtext);
TextView trt = (TextView) v.findViewById(R.id.toprighttext);
TextView tbt = (TextView) v.findViewById(R.id.bottomrighttext);
if (tt != null) {
tt.setText(d.name);}
if(bt != null){
bt.setText(d.shortDescription);
}
if (d.highTemp != null){
if (trt != null) {
trt.setText("Hi: " + d.highTemp);
tbt = null;
}
} else {
if (tbt != null) {
trt = null;
tbt.setText("Lo: " + d.lowTemp);
}
}
}
return v;
}
Ça l'a fait! J'ai déjà essayé 'tbt = null' et 'trt = null' et cela ne fonctionnait pas, mais en utilisant un setText vide l'a fait !, Merci beaucoup. – joepetrakovich