web-dev-qa-db-fra.com

Ce que font bindView () et newView () dans CursorAdapter

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.

25
Jainendra

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.

126
Vinay S Shenoy