解决方案 »

  1.   

    重写ListView的Adapter(可以继承BaseAdapter),重写getView方法,根据getView方法里面的position分别infater不同的布局
      

  2.   

    楼上讲的很好!你可以在geiView方法里生成linearlayout,根据需要往linearlayout添加控件,最后return linearlayout控件
      

  3.   

    有个函数  getItemViewType(int position) ;不错。@Override   
    public intgetItemViewType(int position) {   
        if (DATA[pos].type == 0) {   
            return 0;   
        } else {   
            return 1;   
        }   
    }   
       
    @Override   
    public int getViewTypeCount() {   
        return 2;   
    }   
       
    @Override   
    public View getView(int position, View convertView, ViewGroup arg2) {   
        TitleViewHolder titleHolder;   
        InfoViewHolder infoHolder;   
        int type = getItemViewType(position);   
       
        if (convertView == null) {   
            switch (type) {   
            case 0:   
                convertView = mInflater.inflate(R.layout.item_view, null);   
                titleHolder = new TitleViewHolder();   
                titleHolder.titleTextView = (TextView) convertView.findViewById(R.id.text);   
                titleHolder.iconImageView = (ImageView) convertView.findViewById(R.id.icon);   
                convertView.setTag(titleHolder);   
                break;   
            case 1:   
                convertView = mInflater.inflate(R.layout.item_view2, null);   
                infoHolder = new InfoViewHolder();   
                infoHolder.titleTextView = (TextView) convertView.findViewById(R.id.text);   
                convertView.setTag(infoHolder);   
                break;   
            }   
        } else {   
            switch (type) {   
            case 0:   
                titleHolder = (TitleViewHolder) convertView.getTag();   
                break;   
            case 1:   
                infoHolder = (InfoViewHolder) convertView.getTag();   
                break;   
            }   
        }   
        switch (type) {   
        case 0:   
            titleHolder.titleTextView.setText(DATA[pos].title);   
            break;   
        case 1:   
            infoHolder.titleTextView.setText(DATA[pos].title);   
            infoHolder.iconImageView.setImageBitmap(DATA[pos].bitmap);   
            break;   
        }   
       
        return convertView;   
    }   
       
    static class TitleViewHolder {   
        public ImageView iconImageView;   
        public TextView titleTextView;   
    }   
       
    static class InfoViewHolder {   
        TextView titleTextView;   
        ImageView iconImageView;   
    }