实现代码

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 = ;
final int TYPE_1 = ;
final int TYPE_2 = ;
final int TYPE_3 = ; public RunRankAdapter(Context context,
ArrayList<HashMap<String, Object>> list) {
ls = list;
mContext = context;
} @Override
public int getCount() {
return ls.size();
} @Override
public Object getItem(int position) {
return ls.get(position);
} @Override
public long getItemId(int position) {
return ;
} // 每个convert view都会调用此方法,获得当前所需要的view样式
@Override
public int getItemViewType(int position) {
int p = position;
if (p == )
return TYPE_1;
else if (p == )
return TYPE_2;
else
return TYPE_3;
} @Override
public int getViewTypeCount() {
return ;
} @Override
public 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 + ));
holder1.time1.setText(ls.get(position).get("time").toString());
break;
case TYPE_2:
holder2.rank2.setText("" + (position + ));
holder2.time2.setText(ls.get(position).get("time").toString());
holder2.totaldistance2.setText(ls.get(position)
break;
case TYPE_3:
holder3.rank3.setText("" + (position + ));
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实现《IT蓝豹》

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

  2. 继续聊WPF——如何获取ListView中选中的项

    在WPF中获Listview中选中的项,与WinForm里面有着很大的区别,要亲身去研究一下在WPF中如果处理,其实也不难,来,下面我们一起来通过一个简单的示例来感悟一下吧. 第一步就是建立一个WPF ...

  3. android ListView中button点击事件盖掉onItemClick解决办法

    ListView 1.在android应用当中,很多时候都要用到listView,但如果ListView当中添加Button后,ListView 自己的 public void onItemClick ...

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

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

  5. Android,LIstView中的OnItemClick点击无效的解决办法

    在List_Item布局文件中的根节点加上如下背景标黄的这一行 <?xml version="1.0" encoding="utf-8"?> < ...

  6. [Android] ListView中如何让onClick和onItemClick事件共存

    ListView中如何使用Button,让onClick和onItemClick事件共存 假如ListView的一条记录包含一个TextView文本框,一个Button按钮,怎样能让点击按钮有事件响应 ...

  7. Android ListView 中的checkbox

    Q:ListView + CheckBox 当上下滚动的时候有事会自动选中或取消 A:这个与ListView的缓存机制有关.当你屏幕滚动后,ListView中的item选项视图先检查缓存中是否有视图, ...

  8. Android ListView中Item点击事件失效解决方案

    欢迎关注公众号,每天推送Android技术文章,二维码如下:(可扫描) 在平常的开发过程中,我们的ListView可能不只是简单的显示下文本或者按钮,更多的是显示复杂的布局,这样的话,我们就得自己写布 ...

  9. android ListView中CheckBox错位的解决

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

随机推荐

  1. 自己动手实现SharePointList的分页展示

    SharePoin列表里对条目的展示只有上一页下一页,不能够跳转,不能够一次导航到第一页和最后一页. 项目需要,所以对列表的数据展示进行了定制化开发来实现如上的功能. 前端用GridView展示,用L ...

  2. magento性能优化的教程(非常详细)

    Magento是一套专业开源的电子商务系统,Magento设计得非常灵活,具有模块化架构体系和丰富的功能但有朋友会发现此模块用到了会发现非常的缓慢了,那么下面我们来看关于magento性能优化的例子. ...

  3. H5 canvas 小demo之小球的随机运动

    1:结构之html----balls.html <!DOCTYPE html> <html> <head lang="en"> <meta ...

  4. c中计时的几种方法

    C计时的几种方法说明及例程 1. 使用clock() 函数 头文件:<time.h> clock()函数,返回“自程序启动到调用该函数,CPU时钟的计时单元数(clock tick)” 每 ...

  5. 20160327javaweb 之JSP入门

    一.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写h ...

  6. cookie和session可能需要知道的知识

    做Android程序员,了解服务器的知识是相当重要的,比如cookie和session. 首先介绍一点背景知识,我们知道HTTP的连接是无状态的,HTTPS只是增加了安全,有了SSL证书来验证,作为服 ...

  7. SSIS结合BCP及SQL Server作业实现定时将数据导出打包实现数据同步

    首先这个流程要实现的功能大致是: 有两台服务器,一台是对外网开发的,一台是内网的.那么很明显数据交互都是外网服务器在做,而这个流程要做的就是要将外网上面的数据定时同步到内网中. 我们依对其中某张表的操 ...

  8. JavaScript高级程序设计(二):在HTML中使用JavaScript

    一.使用<script>元素 1.<script>元素定义了6个属性: async:可选.表示应该立即下载脚本,但不应该妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本 ...

  9. c#安全性、稳定性、高性能需要注重的点

    1.弱事件 2.类型安全(包括类型转换时可能的异常) 3.线程安全 5.装箱和拆箱 6.闭包传递局部变量时可能遇到的问题. 7.用于dictionary的键,要同时实现GetHashCode和Equa ...

  10. javascript 基础1第11节

    <html> <head> <title>javascript基础</title> </head> <body> 1.NaN i ...