Was sind die Vorteile dieses Ansatzes (die Verwendung einer statisch verschachtelten Klasse in meiner Klasse MyAdapter erweitert RecyclerView.Adapter):
static class MyVH extends RecyclerView.ViewHolder {...}
Und dieser Ansatz (unter Verwendung der inneren Klasse der Mitglieder):
class MyVH extends RecyclerView.ViewHolder {...}
Oder hat es keinen Einfluss auf die Leistung und beide Ansätze könnten verwendet werden?
Es ist eher eine Java frage als eine Android frage. Es wird empfohlen, statisch für innere Klassen zu verwenden, um Speicherverluste zu vermeiden, wenn Sie deren Instanzen entfernen möchten Sie können sich this awesome post ansehen, der die Speicherlecks in inneren Klassen erklärt.
Grundsätzlich sagt nyx:
Bei der Beantwortung Ihrer Performance-Frage können Sie sich this answer ansehen. Die statische Version benötigt weniger Speicher als die andere, aber wir sprechen auch hier von Recyclern, die die Instanzen recyceln, sodass die Auswirkungen auf den Speicher kein Problem darstellen.
Wenn Sie static verwenden, können Sie MyVh
in anderen Adaptern wiederverwenden. Wenn Sie sicher sind, dass Sie nur MyVh
für diesen einen Adapter benötigen, sollten Sie ihn nicht statisch machen.
Wenn Sie es in anderen Adaptern benötigen, ist es möglicherweise sogar besser, es als separate Klasse zu erstellen, anstatt als verschachtelte Klasse.
Es sollte keine Auswirkungen auf die Leistung für statische oder nicht statische Komponenten geben!
Wenn Sie einen Ansichtshalter an mehreren Stellen verwenden möchten, wird empfohlen, separate Klassen zu erstellen. Andernfalls erstellen Sie einen nicht statischen verschachtelten Ansichtshalter, wenn Sie den Ansichtshalter nur an einer Stelle verwenden möchten. Ein statischer Viewholder macht keinen Sinn
In den meisten Fällen verwende ich verschachtelte Viewholder-Klassen