2010-01-17 11 views
8

ViewHolder modèle améliore ListView framerate de défilement, comme on le voit dans l'exemple suivant: https://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List14.htmlAndroid: modèle ViewHolder et différents types de lignes?

Est-il possible de garder ce modèle tout en utilisant différents types de vues pour différentes lignes?

En d'autres termes, est-il possible de faire quelque chose comme:

public View getView(int position, View view, ViewGroup parent) { 
    // calculate viewID here 
    if (view == null || *view is not null but was created from different XML than viewID*) { 
     view = mInflater.inflate(viewId, null); 

Répondre

17

Oui, mais il est préférable de passer outre getViewTypeCount() et getItemViewType() dans votre adaptateur. Cela enseignera au pool d'objets d'Android de ne vous remettre qu'une ligne du type correct en getView().

+1

y at-il une astuce similaire pour ExpandableListAdapter? – tomash

+0

pendant ce temps, j'ai ajouté les informations nécessaires comme un drapeau à ViewHolder, ça marche – tomash