Android ListView中 每一项都有不同的布局
实现代码
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中 每一项都有不同的布局相关推荐
- android listview中item通过viewpager实现
android listview中item通过viewpager实现 android listview中item通过viewpager实现,每一个item都支持viewpager实现图片切换功能.本项 ...
- Android ListView中CheckBox选中状态失效的最佳解决方案
Android ListView中CheckBox选中状态失效: 在ListView中某一项滑到显示区外部的时候,重新划回来时其中的CheckBox的选中状态会重置,本文提出了一种解决方案,操作起来快 ...
- 点击ListView中某一项,得到对应内容
点击ListView中某一项,得到对应内容 先上效果图:(此处获取内容后用Toast显示) 下面是各部分代码 layout.xml(新建layout时直接把Root Tag设成ListView也可) ...
- android listview中item倒计时,GitHub - TangAnna/ListViewTimer: 列表中每一个item都有计时器 (可实现倒计时或者计时器的功能)...
ListViewTimer 列表中每一个item都有计时器 (可实现倒计时或者计时器的功能) 项目中有时会遇到列表中含有倒计时或者是计时器的需求,实现的方式有很多种,此Demo中是使用Thread + ...
- Android Listview中Button按钮点击事件冲突解决办法
今天做项目时,ListView中含有了Button组件,心里一早就知道肯定会有冲突,因为以前就遇到过,并解决过,可惜当时没有记录下来. 今天在做的时候,继续被这个问题郁闷了一把,后来解决后,赶紧来记录 ...
- android listview中播放视频,支持全屏
最近在做项目的时候有需求要在 listView 中播放视频,并且支持横竖屏无缝切换,在网上搜索了一下,关于这种 demo真的很少, 有的也只是实现简单的功能,无法满足项目中的需求,想着修改一下凑合用, ...
- Android listView中的button点击事件
如果listView中的item有button控件,那么如何获取listView中的button控件?又如何在点击button时定位当前的item? 在listview中的listitem设置事件响应 ...
- Android listview 中嵌套 listview
在 父listview中 adapter的 getview 中 设置 子listview 的 adapter 之后 添加下面方法,传入子listview. public void setListVie ...
- android ListView中CheckBox错位的解决
貌似已经非常晚了,可是还是想记下笔记,想让今天完满. 在ListView中加了checkBox,但是发现点击改变其选中状态的时候,发现其位置错乱.状态改变的并非你选中的,百思不得其解.后面通过上网查资 ...
最新文章
- C++继承机制下的构造函数
- ajax的数据库,AJAX 数据库
- 人生的主干,提及程序化
- 块级元素(导航,图片,层)的水平和垂直居中
- K8S仪表板Service unavailable故障的解决办法
- RTX5 | 事件标志组04 - 线程同步(逻辑与)
- MKcms4.4.3仿品优影视网站系统完整开源版自动采集可设置视频收费
- Fellow观点:AI框架下的医疗影像教学
- 普通程序员想转人工智能,不知道它?别想了!
- java函数式 new_Java函数式编程-4.lambda表达式一些高级用法
- 湾区那些事儿 (二)
- Java旅游管理系统本科生毕业设计开题报告
- Python 算法之 动态规划详解
- 腾讯云内容分发网络 CDN 产品认证课程笔记(三)——腾讯云CDN操作指引
- 离散数学中关于自反与反自反的通俗解释
- 费马大定理+勾股数奇偶规律
- Qt3升至Qt4需要注意的几件事项浅谈
- 信用评分模型中的滚动率分析
- 使用 github copilot 踩坑记录:failed to initiate the github login process please try again
- iOS开发 图片选择器、图片多选功能的实现
热门文章
- 计算机三级需要学哪些,计算机三级有必要考吗_计算机三级有哪些科目_上学吧...
- python自加1_python中有自增
- linux ssh非交互脚本,sshpass-Linux命令之非交互SSH
- linux so获取自己路径,linux下so获得自己文件位置的路径
- mysql实用工教程_MYSQL实用教程
- pdfjs 字体新增_pdfjs 引入字体失败
- 4 关卡流 进阶_赛博朋克2077:实用玩法攻略,技术流玩法攻略
- 安卓讲课笔记(9):列表视图
- python3爬取教务系统_python requests模拟登陆正方教务管理系统,并爬取成绩
- 【Linux使用】Centos 7设置时区与时钟(chrony / ntp /systemd)