J'ai un CursorAdaptor
personnalisé dans mon projet avec les méthodes substituées bindView(View view, Context context, Cursor cursor)
et newView(View view, Context context, Cursor cursor)
. Je veux savoir pour quoi CursorAdapter
est utilisé et quelle est la différence entre les utilisations de bindView()
et newView()
.
J'ai lu le tutoriel Site du développeur et this mais je n'ai toujours pas compris. Comme je suis un débutant sur Android, aidez-moi à comprendre ce concept.
Pour comprendre cela, vous devez d'abord comprendre comment BaseAdapter
fonctionne, puisque CursorAdapter
est une sous-classe de BaseAdapter
.
Android maintient un pool de vues pour un ListView
qu'il vous donnera afin que vous puissiez le réutiliser au lieu de créer une nouvelle vue à chaque fois.
Dans BaseAdapter
, vous aurez une fonction appelée getView()
, dont l'un des paramètres est un objet View
nommé convertView
. Fondamentalement, ce convertView
sera null
si la liste est chargée pour la première fois, et ce ne sera pas null
une fois que vous commencerez à faire glisser la liste. Par conséquent, dans la méthode getView()
de votre BaseAdapter
, vous vérifierez si convertView
est null
. Si oui, vous allez le gonfler. Ensuite, vous pouvez utiliser la vue et définir ses éléments comme d'habitude. Cela améliorera considérablement les performances de défilement d'une vue de liste.
Un CursorAdapter
le rend facile à utiliser lorsque la source de données d'une liste est une base de données. Dans un adaptateur de curseur, cependant, Android prend soin de vérifier si le convertView
est null
ou non. Dans la newView()
, vous gonflez simplement la vue et la retournez. Dans la méthode bindView()
, vous définissez les éléments de votre vue.
Par exemple, imaginez une vue de liste sur un appareil qui peut afficher jusqu'à 11 éléments de liste à l'écran. Dans ce cas, newView()
sera appelée jusqu'à 11 fois. Cependant, bindView()
sera appelée plusieurs fois lorsque vous faites défiler la liste. Les 11 vues que vous avez créées dans votre méthode newView seront réutilisées encore et encore lorsque vous parcourez la liste.