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,就是我们需要的(假如它不为空的话)