So bin ich versucht, ein anderes Layout Ressource für mein erstes ListItem Element setzen Sie diesen Code verwenden:Einstellung Layout ersten Listview Artikel
int type;
@Override
public int getItemViewType(int position) {
if(position==0) {
type = R.layout.queue_item_next;
} else {
type = R.layout.queue_item;
}
return type;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = (View) inflater.inflate(getItemViewType(position), parent, false);
}
Dieser Code funktioniert jedoch mit etwas unerwartetes Verhalten. Aus irgendeinem Grund wird das letzte Element der ListView auch auf dieses alternative Layout gesetzt und ich habe keine Ahnung warum.
Was könnte dazu führen, dass dies geschieht?
Danke.
Vielleicht, weil '' convertView wird wiederverwendet zu verwenden. Entfernen Sie 'if' und überprüfen Sie, ob es funktioniert. – Sanjeet
Ich bin mir nicht hundertprozentig sicher, aber ich denke, es hängt mit dem Recycling zusammen. Sie überprüfen derzeit, ob convertView null ist, aber ich denke, Sie müssen auch den aktuellen Typ der convertView überprüfen. Sie könnten das im Tag von convertView speichern, um diese Prüfung durchzuführen. – 0xDEADC0DE
, aber das Hinzufügen der Prüfung auf convertView erhöht den Speicher, wenn die Anzahl der anzuzeigenden Elemente groß ist, was das Konzept der Wiederverwendungsansicht verletzt. – Swapnil