android ListView加载不同布局
2015-10-27 20:11
543 查看
今天来跟大家讨论下同一个ListView如何加载不同的布局。
老规矩,先来看效果图。
![](http://img.blog.csdn.net/20151027185333916)
主要步骤如下
1.增加Type。
2.重写getViewTypeCount方法。
3.重写getItemViewType方法。
4.重写getView方法。
这样便可对ListView加载不同Type的布局。
老规矩,先来看效果图。
主要步骤如下
1.增加Type。
2.重写getViewTypeCount方法。
3.重写getItemViewType方法。
4.重写getView方法。
1.增加Type
我们这里只有2种type;故private final int TYPE_01 = 0; private final int TYPE_02 = 1;
2.重写getViewTypeCount方法。因为只有2个,所以这里直接返回2了。
@Override public int getViewTypeCount() { return 2; }
3.重写getItemViewType方法。
这里是根据不同的pos来判断布局。@Override public int getItemViewType(int position) { if(position==0) return TYPE_01; else return TYPE_02; }
4.重写getView
跟普通的getView一样,只不过多了一个switch的过程@Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder viewHolder=null; int type = getItemViewType(i); if(view == null){ switch (type){ case TYPE_01: view = mInflater.inflate(R.layout.item_main_top,null); final Switch mSwitch = (Switch) view.findViewById(R.id.switch_list_main); } } else { //close the LocationService break; case TYPE_02: view = mInflater.inflate(R.layout.item_main,null); viewHolder = new ViewHolder(); viewHolder.mTextView = (TextView) view.findViewById(R.id.textView_item_main); view.setTag(viewHolder); break; } }else{ switch (type){ case TYPE_02: viewHolder = (ViewHolder) view.getTag(); break; } } switch(type) { case TYPE_02: viewHolder.mTextView.setText(mStringArr[i-1]); break; } return view; }
这样便可对ListView加载不同Type的布局。
相关文章推荐
- Android设计模式系列--工厂方法模式
- Android设计模式系列-单例模式
- Android设计模式—策略模式
- Android设计模式系列-组合模式
- android下拉菜单spinner的使用方法
- 关于在android项目中使用fragment的个人经验
- Android Menu的几种实现方式
- Android Layout_weight 解密
- android 屏幕适配的问题
- android 应用 kill ,restart ,重启,方法
- 关于在android项目中使用fragment的个人经验
- Android ViewDragHelper完全解析 自定义ViewGroup神器
- Android动画精讲一:从setTranslationX谈属性动画和view动画的区别
- Android按返回键,程序进入后台运行,不关闭程序,finishAcrivity
- Android 读书笔记---Intent 和 IntentFilter
- android数据存储之数据库
- Android下使用Properties文件保存程序设置
- Android onTouch事件传递机制
- android soap webservers 无法执行 报错 ht.call(SOAP_ACTION, envelope);解决方法
- Activity进阶知识整理