实现代码

Adapter的代码

其中:ViewHolder分别是三个不同的布局,也就是ListView中每一项的布局

TYPE_1...是三种类型.

在使用不同布局的时候,getItemViewType和getViewType不能少,一般是不用这两个函数的重载的

    class RunRankAdapter extends BaseAdapter {ArrayList<HashMap<String, Object>> ls;Context mContext;LinearLayout linearLayout = null;LayoutInflater inflater;TextView tex;final int VIEW_TYPE = 3;final int TYPE_1 = 0;final int TYPE_2 = 1;final int TYPE_3 = 2;public RunRankAdapter(Context context,ArrayList<HashMap<String, Object>> list) {ls = list;mContext = context;}@Overridepublic int getCount() {return ls.size();}@Overridepublic Object getItem(int position) {return ls.get(position);}@Overridepublic long getItemId(int position) {return 0;}// 每个convert view都会调用此方法,获得当前所需要的view样式
        @Overridepublic int getItemViewType(int position) {int p = position;if (p == 0)return TYPE_1;else if (p == 1)return TYPE_2;elsereturn TYPE_3;}@Overridepublic int getViewTypeCount() {return 3;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder1 holder1 = null;ViewHolder2 holder2 = null;ViewHolder3 holder3 = null;int type = getItemViewType(position);if (convertView == null) {inflater = LayoutInflater.from(mContext);// 按当前所需的样式,确定new的布局switch (type) {case TYPE_1:convertView = inflater.inflate(R.layout.item_runrank1,parent, false);holder1 = new ViewHolder1();holder1.rank1 = (TextView) convertView.findViewById(R.id.tv_list1_rank);holder1.time1 = (TextView) convertView.findViewById(R.id.tv_list1_time);convertView.setTag(holder1);break;case TYPE_2:convertView = inflater.inflate(R.layout.item_runrank2,parent, false);holder2 = new ViewHolder2();holder2.rank2 = (TextView) convertView.findViewById(R.id.tv_list2_rank);holder2.time2 = (TextView) convertView.findViewById(R.id.tv_list2_time);convertView.setTag(holder2);break;case TYPE_3:convertView = inflater.inflate(R.layout.item_runrank3,parent, false);holder3 = new ViewHolder3();holder3.rank3 = (TextView) convertView.findViewById(R.id.tv_list3_rank);holder3.time3 = (TextView) convertView.findViewById(R.id.tv_list3_time);convertView.setTag(holder3);break;default:break;}} else {switch (type) {case TYPE_1:holder1 = (ViewHolder1) convertView.getTag();break;case TYPE_2:holder2 = (ViewHolder2) convertView.getTag();break;case TYPE_3:holder3 = (ViewHolder3) convertView.getTag();break;}}// 设置资源switch (type) {case TYPE_1:holder1.rank1.setText("" + (position + 1));holder1.time1.setText(ls.get(position).get("time").toString());break;case TYPE_2:holder2.rank2.setText("" + (position + 1));holder2.time2.setText(ls.get(position).get("time").toString());holder2.totaldistance2.setText(ls.get(position)break;case TYPE_3:holder3.rank3.setText("" + (position + 1));holder3.time3.setText(ls.get(position).get("time").toString());break;}return convertView;}public class ViewHolder1 {TextView rank1;TextView time1;}public class ViewHolder2 {TextView rank2;TextView time2;}public class ViewHolder3 {TextView rank3;TextView time3;}}

使用方式:

声明并定义自己的Adapter,在ListView中设置他的Adapter

private RunRankAdapter runRankAdapter;
ArrayList<HashMap<String, Object>> runRank;
ListView lv_runRank;
runRank = new ArrayList<HashMap<String, Object>>();
runRankAdapter = new RunRankAdapter(this, runRank);
lv_runRank = (ListView) findViewById(R.id.lv_runRank);
lv_runRank.setAdapter(runRankAdapter);

利用type为Listview的item设置不同的布局

Android ListView中 每一项都有不同的布局相关推荐

  1. android listview中item通过viewpager实现

    android listview中item通过viewpager实现 android listview中item通过viewpager实现,每一个item都支持viewpager实现图片切换功能.本项 ...

  2. Android ListView中CheckBox选中状态失效的最佳解决方案

    Android ListView中CheckBox选中状态失效: 在ListView中某一项滑到显示区外部的时候,重新划回来时其中的CheckBox的选中状态会重置,本文提出了一种解决方案,操作起来快 ...

  3. 点击ListView中某一项,得到对应内容

    点击ListView中某一项,得到对应内容 先上效果图:(此处获取内容后用Toast显示) 下面是各部分代码 layout.xml(新建layout时直接把Root Tag设成ListView也可) ...

  4. android listview中item倒计时,GitHub - TangAnna/ListViewTimer: 列表中每一个item都有计时器 (可实现倒计时或者计时器的功能)...

    ListViewTimer 列表中每一个item都有计时器 (可实现倒计时或者计时器的功能) 项目中有时会遇到列表中含有倒计时或者是计时器的需求,实现的方式有很多种,此Demo中是使用Thread + ...

  5. Android Listview中Button按钮点击事件冲突解决办法

    今天做项目时,ListView中含有了Button组件,心里一早就知道肯定会有冲突,因为以前就遇到过,并解决过,可惜当时没有记录下来. 今天在做的时候,继续被这个问题郁闷了一把,后来解决后,赶紧来记录 ...

  6. android listview中播放视频,支持全屏

    最近在做项目的时候有需求要在 listView 中播放视频,并且支持横竖屏无缝切换,在网上搜索了一下,关于这种 demo真的很少, 有的也只是实现简单的功能,无法满足项目中的需求,想着修改一下凑合用, ...

  7. Android listView中的button点击事件

    如果listView中的item有button控件,那么如何获取listView中的button控件?又如何在点击button时定位当前的item? 在listview中的listitem设置事件响应 ...

  8. Android listview 中嵌套 listview

    在 父listview中 adapter的 getview 中 设置 子listview 的 adapter 之后 添加下面方法,传入子listview. public void setListVie ...

  9. android ListView中CheckBox错位的解决

    貌似已经非常晚了,可是还是想记下笔记,想让今天完满. 在ListView中加了checkBox,但是发现点击改变其选中状态的时候,发现其位置错乱.状态改变的并非你选中的,百思不得其解.后面通过上网查资 ...

最新文章

  1. C++继承机制下的构造函数
  2. ajax的数据库,AJAX 数据库
  3. 人生的主干,提及程序化
  4. 块级元素(导航,图片,层)的水平和垂直居中
  5. K8S仪表板Service unavailable故障的解决办法
  6. RTX5 | 事件标志组04 - 线程同步(逻辑与)
  7. MKcms4.4.3仿品优影视网站系统完整开源版自动采集可设置视频收费
  8. Fellow观点:AI框架下的医疗影像教学
  9. 普通程序员想转人工智能,不知道它?别想了!
  10. java函数式 new_Java函数式编程-4.lambda表达式一些高级用法
  11. 湾区那些事儿 (二)
  12. Java旅游管理系统本科生毕业设计开题报告
  13. Python 算法之 动态规划详解
  14. 腾讯云内容分发网络 CDN 产品认证课程笔记(三)——腾讯云CDN操作指引
  15. 离散数学中关于自反与反自反的通俗解释
  16. 费马大定理+勾股数奇偶规律
  17. Qt3升至Qt4需要注意的几件事项浅谈
  18. 信用评分模型中的滚动率分析
  19. 使用 github copilot 踩坑记录:failed to initiate the github login process please try again
  20. iOS开发 图片选择器、图片多选功能的实现

热门文章

  1. 计算机三级需要学哪些,计算机三级有必要考吗_计算机三级有哪些科目_上学吧...
  2. python自加1_python中有自增
  3. linux ssh非交互脚本,sshpass-Linux命令之非交互SSH
  4. linux so获取自己路径,linux下so获得自己文件位置的路径
  5. mysql实用工教程_MYSQL实用教程
  6. pdfjs 字体新增_pdfjs 引入字体失败
  7. 4 关卡流 进阶_赛博朋克2077:实用玩法攻略,技术流玩法攻略
  8. 安卓讲课笔记(9):列表视图
  9. python3爬取教务系统_python requests模拟登陆正方教务管理系统,并爬取成绩
  10. 【Linux使用】Centos 7设置时区与时钟(chrony / ntp /systemd)