listView的不同item展示

来源:互联网 发布:淘宝卖家发快递多少钱 编辑:程序博客网 时间:2024/05/22 12:43

package com.bwei.list;

import java.util.ArrayList;
import java.util.List;

import com.bwei.list.bean.DataBean;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {

private static final int TYPE_ONE = 1;private static final int TYPE_THREE = 3;private static final int TYPE_TWO = 2;String[] text = {"liulailin","lisi","wangwu","zhaoliu","aaa","bbb"};int[] images = {R.drawable.jx_left_listitem_1,R.drawable.jx_left_listitem_2,        R.drawable.jx_left_listitem_3,R.drawable.jx_left_listitem_4,R.drawable.jx_left_listitem_5,        R.drawable.jx_left_listitem_6};private List<DataBean> list;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    initData();    ListView lv = (ListView) findViewById(R.id.lv);    lv.setAdapter(new MyAdapter());}private void initData() {    list = new ArrayList<DataBean>();    int index = 0;    int imageIndex1 = 0;    int imageIndex2 = 0;    for (int i = 0; i < 12; i++) {        DataBean bean = new DataBean();        //第一种类型        if(i%2==0){            bean.text = text[index];            bean.type = TYPE_ONE;            index++;        }else if(i%3==0){            bean.text = text[imageIndex2];            bean.images = images[imageIndex2];            bean.type = TYPE_THREE;            imageIndex2++;        }else{            bean.text = text[imageIndex1];            bean.images = images[imageIndex1];            bean.type = TYPE_TWO;            imageIndex1++;        }        list.add(bean);    }    for (DataBean b : list) {        System.out.println(b.text+"");    }}class MyAdapter extends BaseAdapter{    /**     * 返回listView不同的item类型     */    @Override    public int getItemViewType(int position) {        //要返回的类型        return list.get(position).type;    }    /**     * 返回listView item类型的个数     */    @Override    public int getViewTypeCount() {        return 3;    }    @Override    public int getCount() {        return list.size();    }    @Override    public Object getItem(int position) {        return null;    }    @Override    public long getItemId(int position) {        return 0;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {         ViewHolder1 holder1 = null;         ViewHolder2 holder2 = null;         ViewHolder3 holder3 = null;        int type = getItemViewType(position);        if(convertView==null){            switch (type) {            case TYPE_ONE:  //类型1                holder1 = new ViewHolder1();                convertView = View.inflate(MainActivity.this, R.layout.lv_item1, null);                holder1.tv1 = (TextView) convertView.findViewById(R.id.item1_tv);                convertView.setTag(holder1);                break;            case TYPE_TWO:    //类型2                holder2 = new ViewHolder2();                convertView = View.inflate(MainActivity.this, R.layout.lv_item2, null);                holder2.iv2 = (ImageView) convertView.findViewById(R.id.item2_iv);                holder2.tv2 = (TextView) convertView.findViewById(R.id.item2_tv);                convertView.setTag(holder2);                    break;            case TYPE_THREE:   //类型3                holder3 = new ViewHolder3();                convertView = View.inflate(MainActivity.this, R.layout.lv_item3, null);                holder3.iv3 = (ImageView) convertView.findViewById(R.id.item3_iv);                holder3.tv3 = (TextView) convertView.findViewById(R.id.item3_tv);                convertView.setTag(holder3);                break;            }        }else{            switch (type) {            case TYPE_ONE:                holder1 = (ViewHolder1) convertView.getTag();                break;            case TYPE_TWO:                holder2 = (ViewHolder2) convertView.getTag();                           break;            case TYPE_THREE:                holder3 = (ViewHolder3) convertView.getTag();                break;            }        }        switch (type) {        case TYPE_ONE:            holder1.tv1.setText(list.get(position).text);            break;        case TYPE_TWO:            holder2.tv2.setText(list.get(position).text);            holder2.iv2.setImageResource(list.get(position).images);                break;        case TYPE_THREE:            holder3.tv3.setText(list.get(position).text);            holder3.iv3.setImageResource(list.get(position).images);            break;        }        return convertView;    }    class ViewHolder1{        TextView tv1;    }    class ViewHolder2{        ImageView iv2;        TextView tv2;    }    class ViewHolder3{        ImageView iv3;        TextView tv3;    }}

}

1 0