ListView多布局展示

来源:互联网 发布:西门子触摸屏编程 编辑:程序博客网 时间:2024/05/17 03:37

实现代码
Adapter的代码
其中:ViewHolder分别是三个不同的布局,也就是ListView中每一项的布局
TYPE_1…是几种类型.
在使用不同布局的时候,getItemViewType和getViewTypeCount不能少,一般的同一种item的列表是不用这两个函数的重载的,但是如果需要不同种类的item,就必须重载这两个

public class MainActivity extends ActionBarActivity {    private ListView lv;    ArrayList<String> list=new ArrayList<String>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();    }    private void initView() {        for (int i = 0; i < 100; i++) {            list.add("aaaaaaaaa"+i);        }        lv = (ListView) findViewById(R.id.lv);        lv.setAdapter(new MyAdapter());    }    class MyAdapter extends BaseAdapter{        final int TYPE_1=0;        final int TYPE_2=1;        @Override        public int getCount() {            // TODO Auto-generated method stub            return list.size();        }        @Override        public Object getItem(int position) {            // TODO Auto-generated method stub            return null;        }        @Override        public long getItemId(int position) {            // TODO Auto-generated method stub            return 0;        }        @Override        public int getItemViewType(int position) {            int p=position;            if (p%2==0) {                return TYPE_1;            }else{                return TYPE_2;            }        }        @Override        public int getViewTypeCount() {            // TODO Auto-generated method stub            return 2;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            // TODO Auto-generated method stub            int gt = getItemViewType(position);            ViewHolder viewHolder = null;            ViewHolder2 viewHolder2=null;            if (convertView==null) {                switch (gt) {                case TYPE_1:                    viewHolder= new ViewHolder();                    convertView=convertView.inflate(MainActivity.this, R.layout.aa, null);                    viewHolder.tv=(TextView) convertView.findViewById(R.id.tv);                    convertView.setTag(viewHolder);                    break;                case TYPE_2:                    viewHolder2= new ViewHolder2();                    convertView=convertView.inflate(MainActivity.this, R.layout.aa2, null);                    viewHolder2.tv=(TextView) convertView.findViewById(R.id.tv);                    convertView.setTag(viewHolder2);                    break;                default:                    break;                }            }else {                switch (gt) {                case TYPE_1:                    viewHolder=(ViewHolder) convertView.getTag();                    break;                case TYPE_2:                    viewHolder2=(ViewHolder2) convertView.getTag();                    break;                default:                    break;                }            }            switch (gt) {            case TYPE_1:                viewHolder.tv.setText(list.get(position));                break;            case TYPE_2:                viewHolder2.tv.setText(list.get(position));                break;            default:                break;            }            return convertView;        }        class ViewHolder{            TextView tv;        }        class ViewHolder2{            TextView tv;        }    }}
0 0
原创粉丝点击