当前位置: 代码迷 >> Android >> 求教ListView针对每一项可以动态布局,该怎么解决
  详细解决方案

求教ListView针对每一项可以动态布局,该怎么解决

热度:4   发布时间:2016-04-28 04:19:17.0
求教ListView针对每一项可以动态布局
在listview的第一个item可以加载不同数量的图片和内容,类似qq空间里面的发表的图片说说,根据图片数量不同,界面显示就不同。


------解决方案--------------------
重写ListView的Adapter(可以继承BaseAdapter),重写getView方法,根据getView方法里面的position分别infater不同的布局
------解决方案--------------------
楼上讲的很好!你可以在geiView方法里生成linearlayout,根据需要往linearlayout添加控件,最后return linearlayout控件
------解决方案--------------------
在geiView中加载不同的布局
------解决方案--------------------
有个函数  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;   
  相关解决方案