ListView的多布局显示

来源:互联网 发布:linux 搭建lamp 编辑:程序博客网 时间:2024/06/06 07:37

1.首先,创建一个大的Info对象,对象内包含几个布局内的所有属性

package wz.listview_morestyle;/** * Created by 醇色 on 2016/12/26. */public class Info {    private String mImg;    private String mImg1;    private String mTv;    public Info() {    }    public Info(String mImg, String mImg1, String mTv) {        this.mImg = mImg;        this.mImg1 = mImg1;        this.mTv = mTv;    }    public String getmImg() {        return mImg;    }    public void setmImg(String mImg) {        this.mImg = mImg;    }    public String getmImg1() {        return mImg1;    }    public void setmImg1(String mImg1) {        this.mImg1 = mImg1;    }    public String getmTv() {        return mTv;    }    public void setmTv(String mTv) {        this.mTv = mTv;    }}

2.创建几个item的布局文件,个数随你的心意


3.创建listview的适配器

package wz.listview_morestyle;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.bumptech.glide.Glide;import java.util.List;/** * Created by 醇色 on 2016/12/26. */public class MyAdapter extends BaseAdapter {    private static final int STYLE_ONE=0;    private static final int STYLE_TWO=1;    private static final int STYLE_THREE=2;    private static final int STYLEA_COUNT=3;    private List<Info> list;    private Context context;    public MyAdapter(List<Info> list, Context context) {        this.list = list;        this.context = context;    }    @Override    public int getItemViewType(int position) {        if (position%2==0){            return  STYLE_ONE;        }else if (position%3==0){            return STYLE_TWO;        }else{            return STYLE_THREE;        }    }    @Override    public int getViewTypeCount() {        return STYLEA_COUNT;    }    @Override    public int getCount() {        if (list!=null){            return list.size();        }        return 0;    }    @Override    public Object getItem(int i) {        return list.get(i);    }    @Override    public long getItemId(int i) {        return i;    }    @Override    public View getView(int i, View view, ViewGroup viewGroup) {        ViewHolder_style1 holder1=null;        ViewHolder_style2 holder2=null;        ViewHolder_style3 holder3=null;        int sytle_type=getItemViewType(i);        if (view==null){            switch (sytle_type){                case STYLE_ONE:                    holder1=new ViewHolder_style1();                    view=View.inflate(context,R.layout.sytle1,null);                    holder1.mImg_style1= (ImageView) view.findViewById(R.id.mImg_style1);                    view.setTag(holder1);                    break;                case STYLE_TWO:                    holder2=new ViewHolder_style2();                    view=View.inflate(context,R.layout.sytle2,null);                    holder2.mImg_style2= (ImageView) view.findViewById(R.id.mImg_style2);                    holder2.mTv_style2= (TextView) view.findViewById(R.id.mTv_style2);                    view.setTag(holder2);                    break;                case STYLE_THREE:                    holder3=new ViewHolder_style3();                    view=View.inflate(context,R.layout.sytle3,null);                    holder3.mImg_style3= (ImageView) view.findViewById(R.id.mImg_style3);                    holder3.mImg1_style3= (ImageView) view.findViewById(R.id.mImg1_style3);                    view.setTag(holder3);                    break;            }        }else{            switch (sytle_type){                case STYLE_ONE:                    holder1= (ViewHolder_style1) view.getTag();                    break;                case STYLE_TWO:                    holder2= (ViewHolder_style2) view.getTag();                    break;                case STYLE_THREE:                    holder3= (ViewHolder_style3) view.getTag();                    break;            }        }        switch (sytle_type){            case STYLE_ONE:                Glide.with(context).load(list.get(i).getmImg()).into(holder1.mImg_style1);                break;            case STYLE_TWO:                Glide.with(context).load(list.get(i).getmImg()).into(holder2.mImg_style2);                holder2.mTv_style2.setText(list.get(i).getmTv());                break;            case STYLE_THREE:                Glide.with(context).load(list.get(i).getmImg()).into(holder3.mImg_style3);                Glide.with(context).load(list.get(i).getmImg1()).into(holder3.mImg1_style3);                break;        }        return view;    }    private class ViewHolder_style1{        private ImageView mImg_style1;    }    private class ViewHolder_style2{        private ImageView mImg_style2;        private TextView mTv_style2;    }    private class ViewHolder_style3{        private ImageView mImg_style3;        private ImageView mImg1_style3;    }}

4.在MainActivity布局文件里写上listview控件,然后找找id,设置适配器就完工了

package wz.listview_morestyle;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ListView;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    private ListView mLv;    private List<Info> list=new ArrayList<>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initList();        initView();    }    private void initList() {        for (int i=0;i<100;i++){            Info info=new Info("http://p3.so.qhmsg.com/sdr/512_768_/t01bf40c3e3d686a7b8.jpg",                    "http://p4.so.qhmsg.com/sdr/512_768_/t0175936c4daf96cbee.jpg",                    i+"");            list.add(info);        }    }    private void initView() {        mLv= (ListView) findViewById(R.id.mLv);        mLv.setAdapter(new MyAdapter(list,MainActivity.this));    }}

附一张效果图


1 0
原创粉丝点击