2017-05-18 5 views
1

Ich habe eine Listenansicht, die Preis von Artikeln zeigt. Ich muss den alten Preis treffen und den neuen Preis basierend auf dem "Angebot" -Wert von json zeigen. So versuche ich es in meinem getView().Issue on Listview scrollen Android

if (dataList.get(position).get("Offer").equals("0")) { 
     viewHolder.view_price.setVisibility(View.GONE); 
    } else { 
     viewHolder.view_subprice.setPaintFlags(viewHolder.view_price.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG) 
    } 

Es funktioniert perfekt am Anfang. Aber wenn ich das Durchstreichen durchstreiche, vermasselt es sich. Textansichten, die nicht streichen, scheinen zu streichen.

+0

Post Volladapter. Und was bedeutet "streiken"? – tompadre

+0

Fügen Sie einen Schlüssel wie "boolean strike = true/false" in der POJO-Klasse hinzu, als es zu verwalten. Es ist einfach. – ashish

+0

schreiben Sie den vollen Code @MridulSKumar – jagapathi

Antwort

1

versuchen, Flags im "if" zu entfernen. Die Sache mit einer Liste in Android ist, dass die Ansichten wiederholt werden. Nehmen wir an, Sie haben 5 Artikel auf dem Bildschirm, insgesamt 10 Artikel. Wenn in getView des ersten Eintrags festgelegt ist, dass der Schlag ausgelöst werden soll. in Ansicht 6, wenn Sie scrollen, wenn Sie nicht brauchen, dass es gestriked wird, wenn es bereits gestriked ist, dann wird es so bleiben, weil Sie es nicht geändert haben. So versuchen Sie etwas wie:

if (dataList.get(position).get("Offer").equals("0")) { 
    viewHolder.view_price.setVisibility(View.GONE); 
    viewHolder.view_subprice.setPaintFlags(null) 
} else { 
    viewHolder.view_subprice.setPaintFlags(viewHolder.view_price.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG) 
viewHolder.view_price.setVisibility(View.Visible); 
    } 
+1

Stellen Sie außerdem sicher, dass Sie Ansichtsrecycling verstehen. http://StackOverflow.com/Questions/11945563/How-Listviews-Recycling-Mechanism-works –

+1

die Rumänen zur Rettung :))) –