之前的做法很笨

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

相关文章:

  • 2022-12-23
  • 2021-09-03
  • 2021-11-05
  • 2022-12-23
  • 2021-12-30
  • 2021-05-20
  • 2021-09-05
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-26
  • 2022-12-23
  • 2021-04-14
相关资源
相似解决方案