listView 多布局

最近在开发项目中遇到了实现类似淘宝首页的需求,使用listView可以解决,在此记录一下。

实现步骤:

  • 重写 getViewTypeCount() – 返回你有多少个不同的布局
  • 重写 getItemViewType(int) – 由position返回view type id
  • 根据view item的类型,在getView中创建正确的convertView

下面是代码示例:

Activity:

HomeItem jchdItem = new HomeItem();
jchdItem.setItemType(ItemType.JCHD);
homeItems.add(jchdItem);
HomeItem yhhdItem = new HomeItem(); yhhdItem.setItemType(ItemType.YHHD_LIST); List<YhhdBean> yhhdLists = new ArrayList<>(); for (int i = 0; i < privilege.size(); i++) {JSONObject object2 = privilege.getJSONObject(i);YhhdBean yhhdList = new YhhdBean();yhhdLists.add(yhhdList); } yhhdItem.setYhhdLists(yhhdLists); homeItems.add(yhhdItem); adapter = new HomeAdapter(getActivity(), homeItems); lv_home_list.setAdapter(adapter);

layout:

    <ListViewandroid:id="@+id/lv_home_list"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:divider="@null"android:overScrollMode="never"android:scrollbars="none" />

Adapter:

public class HomeAdapter extends BaseAdapter {private Context context;private List<HomeItem> list;private final static int JCHD = 3;private final static int YHHD_LIST = 4;public HomeAdapter(Context context, List<HomeItem> list) {this.context = context;this.list = list;}@Overridepublic int getCount() {return list != null ? list.size() : 0;}@Overridepublic Object getItem(int i) {return list == null ? null : list.get(i);}@Overridepublic long getItemId(int i) {return i;}@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {HomeItem homeItem = list.get(i);LayoutInflater inflater = LayoutInflater.from(context);YhhdHodlder yhhdHodlder;YhhdListHolder yhhdListHolder;int type = homeItem.getItemType().getValue();switch (type) {case JCHD:if (view == null) {view = inflater.inflate(R.layout.view_yhhd, null);yhhdHodlder = new YhhdHodlder(context, view, "精彩");view.setTag(yhhdHodlder);} else {yhhdHodlder = (YhhdHodlder) view.getTag();}break;case YHHD_LIST:if (view == null) {view = inflater.inflate(R.layout.view_main_yhhd_list, null);yhhdListHolder = new YhhdListHolder(context, view);view.setTag(yhhdListHolder);} else {yhhdListHolder = (YhhdListHolder) view.getTag();}yhhdListHolder.initView(homeItem);break;}return view;}@Overridepublic int getItemViewType(int position) {if (list != null && position < list.size()) {return list.get(position).getItemType().getValue();}return super.getItemViewType(position);}@Overridepublic int getViewTypeCount() {return 2;}
}
HomeItem:
public class HomeItem {private ItemType itemType;private List<YhhdBean> yhhdLists;public ItemType getItemType() {return itemType;}public void setItemType(ItemType itemType) {this.itemType = itemType;}public List<YhhdBean> getYhhdLists() {return yhhdLists;}public void setYhhdLists(List<YhhdBean> yhhdLists) {this.yhhdLists = yhhdLists;}}
ItemType:
public enum ItemType {JCHD(3),   YHHD_LIST(4);  public int getValue() {return value;}private int value;ItemType(int value) {this.value = value;}
}

 

转载于:https://www.cnblogs.com/chhom/p/8320667.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267709.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据查询

command命令的方法&#xff1a;ExecuteNonQuery(受影响行数),ExecuteReader(返回的是Datatable),ExecuteScalar(第一行第列) SqlDataAdapter是和DataSet配和工作的&#xff0c;不能分开。 using(SqlConnection connnew SqlConnection(connectionString)) { conn.Open(); SqlCom…

Php面试题之背人过桥,梦见背人过桥好不好?

吉凶指数&#xff1a;99(由佛滔居士根据数理文化得出&#xff0c;仅供参考)老年人梦见桥&#xff0c;意味着将不久于人世。谈判人员梦见桥&#xff0c;意味着与对手实现双赢。梦见走过土桥的梦&#xff0c;也表示谈生意、婚姻等拖延不决。梦见过桥&#xff0c;表示有能力解决遇…

第00章—IDEA

spring boot 系列学习记录&#xff1a;http://www.cnblogs.com/jinxiaohang/p/8111057.html 码云源码地址&#xff1a;https://gitee.com/jinxiaohang/springboot 来自网络搜索整理 IntelliJ IDEA安装 IntelliJ IDEA破解 IntelliJ IDEA 注册码 IntelliJ IDEA安装主题 IntelliJ …

软件测试5未来大发展路线,测试工程师发展偏向

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、软件测试的五大…

SQL里的SWITCH分支语句

declareiintdeclarejvarchar(10)seti1selectjcaseiwhen1then11when2then22when3then33elseotherendprintj

linux 文件夹换所属用户,linux普通用户su root切换提示没有文件或目录的解决方法...

1. 首先进入单用户模式&#xff1a;1). ubuntu :上述情况可以在grub界面选择第二项修复&#xff0c;但没有grub可以参考&#xff1a;1、重启ubuntu&#xff0c;随即长按shirft进入grub菜单&#xff1b;2、选择recovery mode&#xff0c;按"e"键进入编辑页面&#xff…

排序算法[转]

笔者最近学习算法&#xff0c;学了很久也只弄懂了几个排序算法&#xff0c;在这里晒一下下&#xff0c;作为以后参考之用。 一、为什么要研究排序问题 许多计算机科学家认为&#xff0c;排序算法是算法学习中最基本的问题&#xff0c;原因有以下几点&#xff1a; l 有时候应用…

linux 搜索 文件 内容,Linux 文件查找及文件内容查找

使用grep搜索文件内容——快捷、方便(1) 在当前目录下的所有文件的文件内容中查找哪个文件的内容中有findcontents(大小写不敏感&#xff0c;列出findcontents所在文件的所在行)——适合于当前目录下的文件及目录数目比较少&#xff0c;如果查找后列出内容过多&#xff0c;将会…

sonar做代码检测时如何忽略一些代码文件

1、管理员登录sonar 2、如图 一条规则配置一个&#xff0c;不要填写逗号或者分号分割的多个规则 转载于:https://www.cnblogs.com/shengulong/p/8324764.html

回车符和换行符

2019独角兽企业重金招聘Python工程师标准>>> 首先转一段关于回车和换行的历史。 回车和换行 关于“回车”&#xff08;carriage return&#xff09;和“换行”&#xff08;line feed&#xff09;这两个概念的来历和区别。 在计算机还没有出现之前&#xff0c;有一种…

linux新建好文件后怎么编译,使用autoconf生成Makefile并编译工程的步骤

前言在Linux下&#xff0c;编译和链接需要用Makefile&#xff0c;而写好一个Makefile可不容易&#xff0c;写出一个规范的Makefile更是麻烦。我们可以利用autoconf来生成一个Makefile&#xff0c;尤其在大型工程里&#xff0c;能省去很多麻烦。这里我会用一个工程来说明怎么做&…

前端跨域的那些事

这一节&#xff0c;我们来讲一讲&#xff0c;前端跨域的那些事&#xff0c;主要分成这样的几部分来讲解&#xff0c; 一、为什么要跨域&#xff1f; 二、常见的几种跨域与使用场景 2.1 JSONP跨域 2.2 iframe跨域 2.3 window.name 跨域 2.4 document.domain 跨域 2.5 cookie跨域…

VC++学习(15):多线程

1. 程序,进程,线程 A: 程序是计算机指令的集合,它以文件的形式存储在磁盘上,而进程通常被定义为一个正在运行的程序的实例,是一个程序在其自身的地址空间中的一次执行活动.一个程序可以对应多个进程. 进程是资源申请,高度和独立运行的单位,因此,它使用系统中的运行资源,而…

在linux中500g怎么分区,500G的硬盘,怎么分区比较合理?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼个人电脑怎么分&#xff1f;希望大家给我规范一下另外&#xff0c;我的/dev/sda2用的是xfs&#xff0c;/dev/sda9用的是reiser4draplaterDrapl ~ $ sudo fdisk -l密码&#xff1a;Disk /dev/sda: 160.0 GB, 160041885696 bytes255 …

CSS宽高背景介绍

本萌新还未毕业&#xff0c;在一家外包公司干了一个月&#xff0c;因烦恼日常琐事任务&#xff0c;深感外包之坑&#xff0c;以及上班路途艰辛&#xff0c;特转战erp实施&#xff0c;继写日常随笔&#xff0c;望来日屌丝逆袭&#xff0c;走上人生巅峰。 若有错误&#xff0c;请…

linux交叉编译生成的是什么,静态链接util-linux – 交叉编译(生成动态链接文件)...

我一直试图交叉编译util-linux for arm但我一直以动态链接的可执行文件结束,我不知道为什么会这样.我的目标是静态的.我在使用类似步骤的不同工具之前进行了交叉编译,并且它一直有效,所以这次我不知道我做错了什么.我正在使用Ubuntu 16.04.以下是我正在运行的命令&#xff1a;e…

维护SAP帮助信息(WEB)

维护SAP帮助信息&#xff08;WEB&#xff09; 1、首先进入000 Client &#xff0c;然后scc4修改000的模式 2、spro 3、 4、 5、注意 服务器为&#xff1a;http://help.sap.com 路径为&#xff1a;saphelp_erp60_sp/helpdata 转载于:https://blog.51cto.com/anhwei/626111

读jQuery之十二(删除事件核心方法)

使用jQuery删除事件&#xff08;或称解除事件绑定&#xff09;有三个函数&#xff1a;unbind、die和undelegate。这三个方法都依赖于未公开的jQuery.event.remove&#xff08;后续使用remove简写&#xff09;。此为删除事件的核心方法。remove 所作的事情与上一篇提到的.add 刚…

像Excel一样使用python进行数据分析(1)

&#xff08;虽然是转载&#xff0c;但是是我每块都测试过得&#xff0c;容易出问题的地方我会添加一些自己的经验&#xff0c;仅供参考&#xff09; 像Excel一样使用python进行数据分析&#xff08;2&#xff09; 像Excel一样使用python进行数据分析&#xff08;3&#xff09;…

linux svn 自动部署,linux下svn安装和自动部署

liunx系统下安装svn并自动更新到项目中三部分&#xff1a;【1.安装 2.建立svn库 3.配置文件】html查看是否安装了svn 【svn –version】若是安装了svn能够先进行卸载 【sudo apt-get remove –purge subversion】接下来进行安装 【sudo apt-get install subversion】当安装成功…