ListView多条目展示

来源:互联网 发布:台达plc编程实例47 编辑:程序博客网 时间:2024/06/06 09:18

多条目展示主要实现的是这两个方法
getViewTypeCount();//获取布局的数量
getItemViewType(int position) ;//判断加载那个布局
activity_main布局

 <ListView       android:id="@+id/listview"       android:layout_width="match_parent"       android:layout_height="wrap_content"></ListView>

listv1布局

<TextView    android:id="@+id/imagev1"    android:layout_width="30dp"    android:layout_height="30dp"    />    <ImageView        android:id="@+id/imagev2"        android:layout_width="30dp"        android:layout_height="30dp"        />

listv2布局

 <ImageView        android:id="@+id/imagev3"        android:layout_width="30dp"        android:layout_height="30dp"        android:background="@mipmap/ic_launcher"        />    <ImageView        android:id="@+id/imagev4"        android:layout_width="30dp"        android:layout_height="30dp"        android:background="@mipmap/ic_launcher"/>    <ImageView        android:id="@+id/imagev5"        android:layout_width="30dp"        android:layout_height="30dp"        android:background="@mipmap/ic_launcher"/>    <ImageView        android:id="@+id/imagev6"        android:layout_width="30dp"        android:layout_height="30dp"        android:background="@mipmap/ic_launcher"/>

list3布局

 <ImageView        android:id="@+id/image1"        android:layout_width="30dp"        android:layout_height="30dp" />    <ImageView        android:id="@+id/image2"        android:layout_width="30dp"        android:layout_height="30dp" />    <ImageView        android:id="@+id/image3"        android:layout_width="30dp"        android:layout_height="30dp" />

Dta类

public class Dta {    private int id;    private int photo;    public int getPhoto() {        return photo;    }    public void setPhoto(int photo) {        this.photo = photo;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }}
public class MainActivity extends AppCompatActivity {    ListView listView;    public List<Dta> list = new ArrayList<>();     @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listView = (ListView) findViewById(R.id.listview);        //第一个对象        Dta dta = new Dta();        dta.setPhoto(R.drawable.a);        dta.setId(0);        list.add(dta);        //第二个对象        Dta dt = new Dta();        dt.setPhoto(R.drawable.b);        dt.setPhoto(R.drawable.c);        dt.setPhoto(R.drawable.e);        dt.setPhoto(R.drawable.h);        dt.setId(1);        list.add(dt);        //第三个对象        Dta dat = new Dta();        dat.setId(2);        dat.setPhoto(R.drawable.f);        dat.setPhoto(R.drawable.g);        dat.setPhoto(R.drawable.h);        list.add(dat);        //适配器实例化        Myadapter myadapter = new Myadapter();        //listview进行适配        listView.setAdapter(myadapter);    }     class Myadapter extends BaseAdapter {        //代表着布局        final int TYPE_1 = 0;        final int TYPE_2 = 1;        final int TYPE_3 = 2;         @Override        public int getCount() {            return list.size();        }        @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 holder;            //getItemViewType(int position)传回的值            int type = getItemViewType(i);            Log.e("=============", "getView: " + type);            if (view == null) {                holder = new ViewHolder();                switch (type) {                    case TYPE_1://第一个布局                        view = View.inflate(MainActivity.this, R.layout.listv1, null);                        holder.t = view.findViewById(R.id.imagev1);                        holder.imagev2 = view.findViewById(R.id.imagev2);                        break;                    case TYPE_2://第二个布局                        view = View.inflate(MainActivity.this, R.layout.listv2, null);                        holder.imagev3 = view.findViewById(R.id.imagev3);                        holder.imagev4 = view.findViewById(R.id.imagev4);                        holder.imagev5 = view.findViewById(R.id.imagev5);                        holder.imagev6 = view.findViewById(R.id.imagev6);                        break;                    case TYPE_3://第三个布局                        view = View.inflate(MainActivity.this, R.layout.listv3, null);                        holder.image1 = view.findViewById(R.id.image1);                        holder.image2 = view.findViewById(R.id.image2);                        holder.image3 = view.findViewById(R.id.image3);                        break;                 }                view.setTag(holder);            } else {                holder = (ViewHolder) view.getTag();            }            switch (type) {                case TYPE_1:                    holder.t.setText(list.get(i).toString());                    holder.imagev2.setImageResource(list.get(i).getPhoto());                    break;                case TYPE_2:                    holder.imagev3.setImageResource(R.drawable.a);                    holder.imagev4.setImageResource(R.drawable.b);                    holder.imagev5.setImageResource(R.drawable.c);                    holder.imagev6.setImageResource(R.drawable.f);                    break;                case TYPE_3:                    holder.image1.setImageResource(list.get(i).getPhoto());                    holder.image2.setImageResource(list.get(i).getPhoto());                    holder.image3.setImageResource(list.get(i).getPhoto());                    break;            }            return view;        }        //布局的总个数        @Override        public int getViewTypeCount() {            return 3;        }        //判断id选择相应的布局        @Override        public int getItemViewType(int position) {            int type = list.get(position).getId();            Log.e("-----------", "getItemViewType: " + type);            if (type == 0)                return TYPE_1;            else if (type == 1)                return TYPE_2;            else if (type == 2)                return TYPE_3;            else                return TYPE_1;        }        class ViewHolder {            TextView t;            ImageView imagev2, imagev3, imagev4, imagev5, imagev6, image1, image2, image3;        }    }}
原创粉丝点击