So che ci sono alcune domande riguardanti questo problema di "getView chiamato poche volte" ma il mio problema è leggermente diverso.ListView - getView è chiamato troppe volte
Ho un listView personalizzato con riga personalizzata (utilizzato row_layout.xml). In genere funziona bene. All'inizio ho avuto un problema con più chiamate a getView ed è stato risolto utilizzando uno dei metodi che ho visto qui in StackOverflow. (usando la matrice 'usedPositions').
ora, vedo nei registri questo scenario: getView pos 0, getView pos 1, getView pos 0, getView pos 1. Ciò ha causato il raddoppiamento delle mie righe. Succede solo quando chiamo una nuova attività che copre l'attività corrente e poi chiudo quell'attività. (ad esempio, aprire l'attività della telecamera e quindi chiuderla).
vi mostrerò il mio codice:
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;
}
Potete dirmi cosa c'è di sbagliato?
Possibile duplicato di [metodo listView dell'adapter personalizzato chiamato più volte e in un ordine non coerente] (http://stackoverflow.com/questions/2618272/custom-listview-adapter-getview-method-being-called- multiple-times-and-in-no-co) – engincancan