J'ai un ListView dans une activité et je définis un adaptateur personnalisé sur ListView.Les adaptateurs d'Android doivent-ils être des classes internes statiques ou des classes internes non statiques?
Si ma classe d'adaptateur:
private static class MyAdapter extends ArrayAdapter
ou
private class MyAdapter extends ArrayAdapter
Je suppose que cela ne devrait pas faire de différence aussi longtemps que l'adaptateur est enfermé dans la référence d'activité, mais a voulu confirmer.
(Pour les futurs lecteurs) La dernière question est à l'envers. Si vous avez une classe interne statique et que vous avez besoin d'accéder à l'activité/au contexte, vous devriez utiliser un WeakReference (s'il y a quelque chose qui pourrait survivre à l'activité). Si la classe n'est pas statique et interne, elle a une référence forte implicite à la classe externe. Dans ce cas, vous devrez également faire attention à la façon dont l'adaptateur est utilisé. L'utilisation de la statique peut aider à trouver des fuites implicites, mais ajoute une surcharge en faisant circuler un contexte/une référence faible. – lilbyrdie
De même, dans tous les appels dans un adaptateur qui prennent un objet View, le contexte est disponible (View.getContext()). Vous pouvez utiliser instanceof pour vous assurer que c'est votre activité. – lilbyrdie