android listview需要呈现多个布局

android listview需要呈现多个布局

之前的做法很笨

在getView()方法里面,不仅将viewHolder作为tag属性设置给convertView
还将当前的position作为tag属性设置给convertview
在getView()方法中,接收到回收的convertview的时候,会根据tag属性里面保存的postion来判断该布局是否当前需要的。
不需要则重新加载布局文件

更好的方法

今天发现其实listView对于的baseAdapter里面对这种需要显示不同布局的情况做了特殊的处理
有两个方法,分别是:


@Override  
 public int getItemViewType(int position) {  
           return mSeparatorsSet.contains(position) ? TYPE_SEPARATOR : TYPE_ITEM; //每个itemp对应的布局类型  
 }    
 @Override  
public int getViewTypeCount() {  
    return TYPE_MAX_COUNT;   //布局的个数
 }  

只要重载这两个方法,在getView()方法里面返回的convertView,就是我们需要的(假如它不为空的话)

原文地址:https://www.cnblogs.com/zhou-guobao/p/5445761.html