0

erste Element zu zeigen, ich habe eine RecyclerView und wenn ich einen Artikel entfernen möchten Ich nenne das:ein Element aus- macht recyclerview

Tipss.remove(position); //Tipss is my array 
adapter.notifyItemRemoved(position); 
rv.setAdapter(adapter) 
adapter.notifyDataSetChanged(); 

Mein Problem ist, dass, nachdem ich die Ansicht der RecyclerView geht alles wieder zu entfernen der Anfang. Ich weiß, das ist, weil rv.setAdapter(adapter) aufgerufen wird. Wenn ich diese Zeile entferne, wird die nächste Ansicht (die nach der Position) die Höhe der entfernten haben und das Layout ruiniert. Kann mir hier jemand helfen? rv.setHasFixedSize() funktioniert nicht.

+0

den ganzen Punkt des 'adapter.notifyItem ... 'ist so, dass du' notifyDatasetChanged() 'nicht jedesmal aufrufen musst, was alles wieder neu zeichnet – tyczj

+0

' setHasFixedSize() 'funktioniert nicht, weil sie keine feste Seite haben oder' Wenn ich diese Zeile entferne, die nächste Ansicht (die eine nach der Position) wird die Höhe der entfernten haben und das ruiniert nur das Layout "würde nicht passieren. Verwenden Sie einfach "notifyItemRemoved (position);" Es sollte für Sie aktualisieren – zgc7009

Antwort

2

Diese beiden Linien sind nicht

rv.setAdapter(adapter) 
adapter.notifyDataSetChanged(); 

erforderlich Wenn Ihr recyclerView unterschiedliche Eigenschaften auf einige Bedingungen für jede Zeile auf Basis haben muss, definieren dann in Ihrem onBindViewHolder()

+0

Aber was soll ich tun, um die Höhe zu ändern? Ich habe bereits in der Frage erwähnt, dass, wenn ich den 'rv.setAdapter (Adapter) 'entferne, die nächste Ansicht das Gewicht der entfernten Ansicht haben wird. –

+0

haben Sie versucht, beide Zeilen zu entfernen und nicht nur rv.setadapter()? –

+0

Ja, ich habe alles versucht. Über dich Vorschlag, das Verhalten ist das gleiche, wenn ich den Adapter eins oder beides entferne. –

Verwandte Themen