今天来跟大家讨论下同一个ListView如何加载不同的布局。

老规矩,先来看效果图。



主要步骤如下

  • 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 ListView加载不同布局的更多相关文章

  1. Android ListView加载更多

    先看效果: ListView的footer布局: <?xml version="1.0" encoding="utf-8"?> <Relati ...

  2. android: 动态加载碎片布局的技巧

    虽然动态添加碎片的功能很强大,可以解决很多实际开发中的问题,但是它毕竟只是在 一个布局文件中进行一些添加和替换操作.如果程序能够根据设备的分辨率或屏幕大小在运 行时来决定加载哪个布局,那我们可发挥的空 ...

  3. 【转】Android ListView加载不同的item布局

    原创教程,转载请保留出处:http://www.eoeandroid.com/thread-72369-1-1.html     最近有需求需要在listView中载入不同的listItem布局,开始 ...

  4. android listview 加载图片错乱(错位)

       写道 今天晚上一个朋友介绍我看了一篇文章,也是解决android中listview在加载图片错位的问题,看了之后,感觉写的很好,自己也遇到这个问题,但是又不知道从何下手,看到这篇文章后,我的问题 ...

  5. android listview 加载遇到的问题

    http://blog.csdn.net/l_serein/article/details/7706338 转载: 描述一下场景: 菜单栏上有若干分类,点击每一个分类,ListView下分根据分类显示 ...

  6. android之 listview加载性能优化ViewHolder

    在android开发中Listview是一个很重要的组件,它以列表的形式根据数据的长自适应展示具体内容,用户可以自由的定义listview每一列的布局,但当listview有大量的数据需要加载的时候, ...

  7. Android动态加载ListView中的Item

    我这周上网看到动态增加listview的每一项item的布局,今天抽空自己写了一个,方便自己日后使用,这个效果还是很不错的,用到了Adapter的notifyDataSetChanged()方法,当点 ...

  8. Android如何在初始化的时候获取加载的布局的宽高

    在自定义ListView中,需要将下拉刷新的View在初始化的时候设置padding隐藏起来,这时就要在初始化的时候获得要加载的布局View的高度. private View headView; he ...

  9. Android动态加载布局之LayoutInflater【转】

    万分感谢大佬:https://www.jianshu.com/p/6a235ba5ee17 深入了解View<一>之Android LayoutInfalter原理分析 下文为:Layou ...

随机推荐

  1. Linux 性能监测:CPU

    CPU 的占用主要取决于什么样的资源正在 CPU 上面运行,比如拷贝一个文件通常占用较少 CPU,因为大部分工作是由 DMA(Direct Memory Access)完成,只是在完成拷贝以后给一个中 ...

  2. Dynamics CRM 打开数据加密报错及修改用户邮件保存报错的解决方法

    在项目里会碰到在修改用户的电子邮件时报错的问题 然后跑到数据管理里打开数据加密又是报错 解决上述问题只需要做下数据库的更改即可,把标志位置1即可,记得要重启下IIS才能生效 SELECT [Colum ...

  3. Scala:字符串

    http://blog.csdn.net/pipisorry/article/details/52902348 Scala字符串 在 Scala 中,字符串的类型实际上是 Java String,它本 ...

  4. 如果用一个循环数组q[0..m-1]表示队列时,该队列只有一个队列头指针front,不设队列尾指针rear,求这个队列中从队列投到队列尾的元素个数(包含队列头、队列尾)。

    #include <iostream> using namespace std; //循环队列(少用一个空间)长度 #define M (8+1) typedef struct node ...

  5. Memcached - In Action

    Memcached 标签 : Java与NoSQL With Java 比较知名的Java Memcached客户端有三款:Java-Memcached-Client.XMemcached以及Spym ...

  6. ssh用法及命令

    http://blog.csdn.net/pipisorry/article/details/52269785 什么是SSH? 简单说,SSH是一种网络协议,用于计算机之间的加密登录.如果一个用户从本 ...

  7. [apache2.4]configure: error: APR not found. Please read the documentation.

    apache2.4 安装出现如下错误 ``` [lzz@localhost httpd-2.4.10]$ ./configure  checking for chosen layout... Apac ...

  8. Java并发框架——AQS之原子性如何保证?

    在研究AQS框架时,会发现这个类很多地方都使用了CAS操作,在并发实现中CAS操作必须具备原子性,而且是硬件级别的原子性,java被隔离在硬件之上,明显力不从心,这时为了能直接操作操作系统层面,肯定要 ...

  9. x264源代码简单分析:编码器主干部分-1

    ===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...

  10. Java学习之栈和堆的区别

    在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配. 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配 ...