listview里有不同的布局时,你就需要通过getItemViewType来决定这个view了
可以看看http://blog.csdn.net/lllkey/article/details/9093107

解决方案 »

  1.   

    这样写肯定不行,因为convertView等于null只有一次,后续都执行else的了,有2个办法:
    1、去掉convertView的判断,每次都新建,效率不会很高
    2、把你的内容放到一个layout里面,通过判断,设置不想显示的内容为GONE,需要显示的是VISIBLE
      

  2.   

    Adapter中根据情况加载不同的item需要重写这2个方法
     @Override
        public int getItemViewType(int position) {
            // 区别两种view的类型,标注两个不同的变量来分别表示各自的类型
            History history = (History) listItems.get(position);
            if (history.getType() == AreaPatrolConstant.ViewType.TYPE_ERROR) {
                return AreaPatrolConstant.ViewType.LOAD_ERROR_VIEW;
            } else {
                return AreaPatrolConstant.ViewType.LOAD_NORMAL_VIEW;
            }
        }    @Override
        public int getViewTypeCount() {
            // 这个方法默认返回1,如果希望listview的item都是一样的就返回1,我们这里有两种风格,返回2
            return TYPE;
        }
      

  3.   

    然后在getView方法中 根据position加载不同的view
      

  4.   

    Adapter中根据情况加载不同的item需要重写这2个方法
     @Override
        public int getItemViewType(int position) {
            // 区别两种view的类型,标注两个不同的变量来分别表示各自的类型
            History history = (History) listItems.get(position);
            if (history.getType() == AreaPatrolConstant.ViewType.TYPE_ERROR) {
                return AreaPatrolConstant.ViewType.LOAD_ERROR_VIEW;
            } else {
                return AreaPatrolConstant.ViewType.LOAD_NORMAL_VIEW;
            }
        }    @Override
        public int getViewTypeCount() {
            // 这个方法默认返回1,如果希望listview的item都是一样的就返回1,我们这里有两种风格,返回2
            return TYPE;
        }
      

  5.   

    可以取巧啊,2个ListView上下并排,弄2个适配器,一个显示前3,一个显示后面的,然后加载上去。