ListView显示不同布局
在使用不同布局的时候,getItemViewType和getViewType不能少,通常是不用这两个函数的重载的
listView.setAdapter(new BaseAdapter() {
@Override
public int getViewTypeCount() {//例:3种类型的布局
return 3;
}
@Override
public int getItemViewType(int position) { //该方法很重要。adapter内部会自己主动调用该方法。然后依据该类型得到缓存的view(可能为null),并传给getView方法//的convertView參数,假设该类型相应的view已被缓存过,则getView中的convertView就不为null
//返回的类型要小于getViewTypeCount(),否则会报数组越界
if (position==20||position==40||position==60) {
return 1;
}
if (position==25||position==45||position==65) {
return 2;
}
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
int type=getItemViewType(position);
System.out.println("getView "+position+" "+convertView+" "+type);
if (convertView==null) {
if (type==0) {
TextView tv=new TextView(getApplicationContext());
tv.setText(""+position);
tv.setPadding(20, 20, 20, 20);
tv.setTextColor(Color.BLACK);
convertView=tv;
}else if(type==1){
TextView tv=new TextView(getApplicationContext());
tv.setText(""+position);
tv.setPadding(20, 10, 10, 10);
tv.setTextColor(Color.BLACK);
tv.setBackgroundColor(Color.GREEN);
convertView=tv;
}else{
ImageView iv=new ImageView(getApplicationContext());
iv.setImageResource(R.drawable.ic_launcher);
convertView=iv;
}
}
switch (type) { //依据类型就能够大胆的强转了,不会抛异常的
case 0:
TextView tv=(TextView) convertView;
tv.setText(""+position);
break;
case 1:
tv=(TextView) convertView;
tv.setText(""+position);
break;
case 2:
ImageView iv=(ImageView) convertView;
break;
}
return convertView;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 5000;
}
});
// 为了验证getView的convertView參数是我们想要的view, 控件高度要高一些。保证同一屏不会出现两个绿色背景textview或imageview
//能够看到20 25位置是第一次出现绿色背景textview和imagerview的位置,相应的convertView为null,40 45位置相应的convertView不为null。传进来的是已经缓存过的view
ListView显示不同布局的更多相关文章
- 滑动listview隐藏和显示顶部布局
需求: 1.listview向下滑动时,隐藏顶部布局 2.listview向上滑动到最上面,显示顶部布局 3.顶部布局的隐藏和显示有过渡效果 4.第一次加载listview时,顶部不要隐藏 布局: 注 ...
- ListView使用item显示不同布局
/** * 自定义城市列表适配器 */ private class MyCityListAdapter extends BaseAdapter { final int VIEW_TYPE = 2; f ...
- 仿喜马拉雅实现ListView添加头布局和脚布局
ListView添加头布局和脚布局 之前学习喜马拉雅的时候做的一个小Demo,贴出来,供大家学习参考: 如果我们当前的页面有多个接口.多种布局的话,我们一般的选择无非就是1.多布局:2.各种复杂滑动 ...
- android 项目学习随笔十二(ListView加脚布局)
1.ListView加脚布局 头布局initHeaderView,在onTouchEvent事件中进行显示隐藏头布局切换 脚布局initFooterView,实现接口OnScrollListener, ...
- ScrollView嵌套ListView显示不完全、嵌套TextView不能滚动解决办法
目录: 一.情景说明 二.最初做法 三.解决办法 一.情景说明 1.情景 最近项目刚好有一个需求,需要在一个界面中用ScrollView嵌套一个滚动的TextView和一个listView ...
- android listView多层嵌套listView显示不全问题
最近在做项目,需要用到listVIew多层嵌套listVIew的需求,先发现已下两个处理办法比较好用 第一种: public class ListViewNesting extends ListVie ...
- 解决ScrollView中包含ListView,导致ListView显示不全
ScrollView 中包含 ListView 的问题 : ScrollView和ListView会冲突,会导致ListView显示不全 <?xml version="1.0" ...
- ListView显示Sqlite的数据美化版与性能优化
在上一篇文章中,我们已经实现在listview显示数据库内容的.但是我们listview中,排版不是很好看,所以这篇文章呢,我们来对listveiw进行美化.哈哈,说白了,就是对listview添加一 ...
- Android ListView显示不同样式的item
先look图 我们再使用listview时,listview的item大多时候都是一种样式,在很多app中也很常见,但有时候根据需求,可能数据的数量不一样,同个类型的数据显示的位置不同,亦或者有的it ...
随机推荐
- CGI-- FASTCGI
http://blog.csdn.net/sweatott/article/details/54913151 CGI:是 Web Server 与 Web Application 之间数据交换的一种协 ...
- leetcode 题解 || Valid Parentheses 问题
problem: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if ...
- [Winform]js与webbrowser交互
摘要 目前项目中采用的方式是内嵌浏览器的方式,打开本地或者互联网上的h5页面.在开发之前做了一下调研.目前常用的在C#封装的浏览器内核中,Chromium 内核封装有Xilium.Cefglue.Ce ...
- [Node.js]操作redis
摘要 在实际开发中,免不了要操作mysql,mongodb,redis等数据存储服务器.这里先简单介绍如何操作redis. 一个例子 关于redis服务端的安装这里不再介绍,重点不在这里.感兴趣的可以 ...
- Unity3D实践系列09, 物理引擎与碰撞检测
在Unity3D中,一个物体通常包含一个Collider和一个Rigidbody.Collider是碰撞体,一个物体是Collider,才可以进行碰撞检测.Collider组件中的"Is T ...
- Android 数据存储02之文件读写
Android文件读写 版本 修改内容 日期 修改人 V1.0 原始版本 2013/2/25 skywang Android文件读写的有两种方式.一种,是通过标准的JavaIO库去读写.另一种,是通过 ...
- mysql 和 sqlite 区别 及 SQLite Expert Professional sqliteManager 区别
mysql 和 sqlite 区别 SQLITE是单机数据库.功能简约,小型化,追求最大磁盘效率MYSQL是完善的服务器数据库.功能全面,综合化,追求最大并发效率 MYSQL.Sybase.Oracl ...
- WordPress主题开发:制作面包屑导航
所谓面包屑,就是类似这种:首页 > 公司简介 > 发展历史 展示网站树型结构,并让网站访问者随时知道自己所处的位置,方便返回上几级. 将下面的代码添加到主题的 functions.php ...
- 【linux c】setsockopt 详解
转自:http://blog.csdn.net/zhonglinzhang/article/details/9183229 功能描述: 获取或者设置与某个套接字关联的选 项.选项可能存在 ...
- Unity Shader _Time 的单位
名称 类型 说明 _Time float4 t 是自该场景加载开始所经过的时间,4个分量分别是 (t/20, t, t*2, t*3) _SinTime float4 t 是时间的正弦值,4个分量分别 ...