Xlistview实现多条目布局

来源:互联网 发布:如何编写电脑软件 编辑:程序博客网 时间:2024/05/04 06:16
------------定义final常量--------------
public int sum=2;public final  int atype=0;public final int btype=1;

---------Adapter 里多实现两个方法-----------
@Overridepublic int getItemViewType(int position) {    String area = list.get(position).area;    if(area.equals("条目一")){        return atype;    }else{        return btype;    }}@Overridepublic int getViewTypeCount() {    return sum;}-----------自定义Viewholder类优化------------class ViewHolder1{    ImageView iv;    TextView name;    TextView type;}class ViewHolder2{    ImageView iv;    TextView name;    TextView type;}
-----------重点 getview方法里----------------
@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {    ViewHolder1 holder1=null;    ViewHolder2 holder2=null;    int type = getItemViewType(i);    if(view==null){            switch (type){                case atype:                    view= LayoutInflater.from(context).inflate(R.layout.item1,null);                    holder1=new ViewHolder1();                    holder1.iv=view.findViewById(R.id.f1_iv);                    holder1.name=view.findViewById(R.id.tv_name);                    holder1.type=view.findViewById(R.id.tv_type);                    view.setTag(holder1);                    break;                case btype:                    view= LayoutInflater.from(context).inflate(R.layout.item2,null);                    holder2=new ViewHolder2();                    holder2.iv=view.findViewById(R.id.f1_iv2);                    holder2.name=view.findViewById(R.id.tv_name2);                    holder2.type=view.findViewById(R.id.tv_type2);                    view.setTag(holder2);                    break;            }    }else{         switch (type){             case atype:                 holder1= (ViewHolder1) view.getTag();                 break;             case btype:                 holder2= (ViewHolder2) view.getTag();                 break;         }    }    switch (type){        case atype:            ImageLoader.getInstance().displayImage(list.get(i).getCoverImg(),holder1.iv);            holder1.name.setText(list.get(i).getName());            holder1.type.setText(list.get(i).getArea());            break;        case btype:            ImageLoader.getInstance().displayImage(list.get(i).getCoverImg(),holder2 .iv);            holder2.name.setText(list.get(i).getName());            holder2.type.setText(list.get(i).getArea());            break;    }    return view;}