Ich möchte Layout-Präsentation in RecyclerView
von Liste zu Grid und umgekehrt ändern. So habe ich änderte meine onCreateViewHolder
Methode:Android Layout ändern Präsentation in RecyclerView
if (presentation.equals("grid")) {
return LayoutInflater.from(parent.getContext()).inflate(R.layout.view_item_grid, parent, false);
}
else {
return LayoutInflater.from(parent.getContext()).inflate(R.layout.view_item_list, parent, false);
}
In meiner Funktion Methode, habe ich verschiedene LayoutManager
in .setLayoutManager(..)
Methode dann notifyDataSetChanged();
if (presentation.equals("grid")) {
recyclerView.setLayoutManager(new GridLayoutManager(context, 3));
}
else {
recyclerView.setLayoutManager(new LinearLayoutManager(context));
}
adapter.notifyDataSetChanged();
Aber wenn ich diese Funktion verwenden, einige der Layouts von Rasterlayout und einige aus Listenlayout.
Ich weiß, dass RecyclerView
Elemente wiederverwenden, wenn sie nicht gezeigt werden, aber wie man dies richtig zeigt und noch Elemente wiederverwenden?
zeigen Sie Ihren Code, wo Sie Ihren 'LayoutManager' ändern .. !! –
Nicht wirklich zu Ihrer Frage verwandt, aber Sie sollten auch erwägen, 'Präsentation' nicht als' String' zu speichern, sondern entweder als 'enum' (was Ihnen Typensicherheit geben würde) oder als' int' Felder mit vordefiniertem 'int' Konstanten für Werte (die Ihnen eine bessere Leistung bringen würden, wenn Sie nicht an #enumsmatter glauben). –
Es ist eine komplexe Schnittstelle, aber ich wollte Sie nicht so für den Zweck dieses Beitrags ich änderte es in einfache Zeichenfolge und IFs zu verwechseln – Lau