Je sais qu'il y a quelques questions concernant ce problème de 'getView appelé quelques fois' mais mon problème est peu différent.ListView - getView est appelé trop de fois
J'ai un listView personnalisé avec une ligne personnalisée (utilisé un row_layout.xml). Cela fonctionne généralement bien. Au début, j'ai eu un problème avec plusieurs appels à getView et il a été corrigé en utilisant l'une des méthodes que j'ai vues ici dans stackoverflow. (en utilisant le tableau 'usedPositions').
maintenant, je vois dans les journaux ce scénario: getView pos 0, getView pos 1, getView pos 0, getView pos 1. Cela a entraîné le doublage de mes lignes. Cela n'arrive que lorsque j'appelle une nouvelle activité qui couvre l'activité en cours, puis ferme cette activité. (par exemple, ouvrez l'activité de la caméra puis fermez-la).
Je vais montrer mon code:
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View row = convertView;
Toast toast = Toast.makeText(this.context, "getView " + position, 1000);
toast.show();
String pos = Integer.toString(position);
if (!usedPositions.contains(pos)) {
CardHolder holder = null;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new CardHolder();
//holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
holder.txtCouponTitle = (TextView)row.findViewById(R.id.txtTitle);
holder.txtBusinessName = (TextView)row.findViewById(R.id.txtBusinessName);
row.setTag(holder);
}
else
{
holder = (CardHolder)row.getTag();
}
Card card = data.get(position);
holder.txtCouponTitle.setText(card.couponTitle);
holder.txtBusinessName.setText(card.businessName);
//holder.imgIcon.setImageResource(card.icon);
TableLayout table = (TableLayout)row.findViewById(R.id.imagesTable);
for (int r=1; r<=1; r++){
TableRow tr = new TableRow(this.context);
for (int c=1; c<=10; c++){
ImageView im = new ImageView (this.context);
im.setImageDrawable(this.context.getResources().getDrawable(c<= card.numberOfStamps ? R.drawable.stamp_red :R.drawable.stamp_grey));
im.setPadding(6, 0, 0, 0); //padding in each image if needed
//add here on click event etc for each image...
//...
tr.addView(im, 40,40);
}
table.addView(tr);
}
// Your code to fill the imageView object content
usedPositions.add(pos); // holds the used position
}
else
usedPositions.remove(pos);
return row;
}
Pouvez-vous me dire ce qui ne va pas?
Copie possible de [méthode getView personnalisée de l'adaptateur ListView appelée plusieurs fois, et dans aucun ordre cohérent] (http://stackoverflow.com/questions/2618272/custom-listview-adapter-getview-method-being-called- multi-times-and-in-no-co) – engincancan