public class PlayAdapter extends BaseAdapter {
/**
* 标题的item
*/
public static final int ITEM_TITLE = 0;
/**
* 二级菜单的item
*/
public static final int ITEM_INTRODUCE = 1;
private List<ViewItem> mList;
private Context context; private LayoutInflater inflater;
public PlayAdapter(Context context, List<ViewItem> mList) {
this.context = context;
this.mList = mList;
inflater = LayoutInflater.from(context);
} @Override
public int getCount() {
// TODO Auto-generated method stub
System.out.println("mList.size()" + mList.size());
return mList.size();
} @Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return mList.get(arg0);
}
//返回 代表某一个样式 的 数值
@Override
public int getItemViewType(int position) { //返回类型
// TODO Auto-generated method stub
return mList.get(position).type;
} //两个样式 返回2
@Override
public int getViewTypeCount() { //不同的布局共2 个
// TODO Auto-generated method stub
return 2;
} @Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
int type = getItemViewType(position); //取得类型
Holder1 holder1 = null;
Holder2 holder2 = null;
System.out.println("getView " + position + " " + convertView
+ " type = " + type);
if (convertView == null) {
//选择某一个样式。。
switch (type) {
case ITEM_TITLE: //一级菜单
convertView = inflater.inflate(R.layout.play_item_title, null);
holder1 = new Holder1(convertView);
holder1.play_title.setText(mList.get(position).name);
convertView.setTag(holder1);
break;
case ITEM_INTRODUCE: //二级菜单
convertView = inflater.inflate(R.layout.paly_item_introduce,null);
holder2 = new Holder2(convertView);
holder2.play_introduce_title
.setText(mList.get(position).address);
convertView.setTag(holder2);
break;
default:
break;
}
} else { //复用view
switch (type) { ////取得类型
case ITEM_TITLE:
holder1 = (Holder1) convertView.getTag();
holder1.play_title.setText(mList.get(position).name);
break;
case ITEM_INTRODUCE:
holder2 = (Holder2) convertView.getTag();
holder2.play_introduce_title
.setText(mList.get(position).address);
break; default:
break;
} } return convertView;
} // 两个样式 两个holder。100就写100holder。。当然你何以把他抽离出来这里先只为了说明问题
class Holder1 {
TextView play_title; Holder1(View view) {
play_title = (TextView) view.findViewById(R.id.play_title);
} }
class Holder2 {
TextView play_introduce_title;
ImageView play_iv;
Holder2(View view) {
play_introduce_title = (TextView) view.findViewById(R.id.play_introduce_title);
play_iv = (ImageView) view.findViewById(R.id.play_iv);
}
} }

ListView里面adapter的不同分类的item的更多相关文章

  1. Android listview与adapter用法

    listview与adapter用法 博客分类: android   一个ListView通常有两个职责. (1)将数据填充到布局. (2)处理用户的选择点击等操作. 第一点很好理解,ListView ...

  2. listview与adapter用法

    Android listview与adapter用法 listview与adapter用法 博客分类: android   一个ListView通常有两个职责. (1)将数据填充到布局. (2)处理用 ...

  3. ListView和Adapter数据适配器的简单介绍

    ListView 显示大量相同格式数据 常用属性: listSelector            listView每项在选中.按下等不同状态时的Drawable divider            ...

  4. ListView和Adapter的配合使用以及Adapter的重写

    ListView和Adapter的使用   首先介绍一下ListView是Android开发过程中较为常见的组件之一,它将数据以列表的形式展现出来.一般而言,一个ListView由以下三个元素组成: ...

  5. ListView 和 Adapter用法

    一个ListView通常有两个职责. (1)将数据填充到布局. (2)处理用户的选择点击等操作. 第一点很好理解,ListView就是实现这个功能的.第二点也不难做到,在后面的学习中读者会发现,这非常 ...

  6. ListView及Adapter的使用

    一.使用ArrayAdapter 其中ArrayAdapter的构造函数有如下几个,其中resource是指每个列表项的布局文件,objects是指列表项的数据源,此处通常指一个数组 ArrayAda ...

  7. android 开发之 ListView 与Adapter 应用实践

    在开发android中,ListView 的应用显得非常频繁,只要需要显示列表展示的应用,可以说是必不可少,下面是记录开发中应用到ListView与Adapter 使用的实例: ListView 所在 ...

  8. [Android] Android RecycleView和ListView 自定义Adapter封装类

    在网上查看了很多对应 Android RecycleView和ListView 自定义Adapter封装类 的文章,主要存在几个问题: 一).网上代码一大抄,复制来复制去,大部分都运行不起来,或者 格 ...

  9. 超简便的ListView中Adapter的写法

    对于 ListView 的使用,他有两个重点的部分,一个是下拉刷新和加载更多,这个今天我们不讲,另外一个是 BaseAdapter 的使用,这个是今天的主角,BaseAdapter 中又有 ViewH ...

随机推荐

  1. javascript ArrayBuffer类型化数组和视图的操作

    个人理解类型化数据就是内存分配区域,不同数据的存储就是视图DataView咯 var buffers = []; var json = {"id":100, "name& ...

  2. 性能差异 ASP.NET WebForm与ASP.NET MVC

    一.为什么说 ASP.NET WebForm 比 ASP.NET MVC 要差? WebForm 顾名思义,微软一向主打简单化,窗体模式,拖拽控件就能做网站了, 然而这也引发了许多 Java 和 .N ...

  3. oracle for loop 简单

    declare i NUMBER; begin loop INSERT INTO emp VALUES(i,i); end LOOP; END;

  4. IDEA部署和导入guns

    1.使用idea进行open -> guns-parent2.修改数据源: 目标:guns-admin\src\main\resources\application.yml 修改内容: 2.1 ...

  5. vue配置stylus

    首先Vue-init webapck 随便一个name vue项目创建好之后 cnpm i  (利用淘宝镜像) cnpm i stylus stylus-loader -D 进行安装和配置 styl常 ...

  6. Buffer 和Cache 的区别

    Buffer 和Cache 的区别buffer 与cache 操作的对象就不一样.buffer

  7. js 去除字符串两边的空格

    js 去除字符串两边的空格 function trim(str){ //删除左右两端的空格          return str.replace(/(^\s*)|(\s*$)/g, "&q ...

  8. [Luogu4177][CEOI2008]order

    luogu sol 这题有点像网络流24题里面的太空飞行计划啊. 最大收益=总收益-最小损失. 先令\(ans=\sum\)任务收益. 源点向每个任务连容量为收益的边. 每个机器向汇点连容量为购买费用 ...

  9. 基于Python语言使用RabbitMQ消息队列(一)

    介绍 RabbitMQ 是一个消息中间人(broker): 它接收并且发送消息. 你可以把它想象成一个邮局: 当你把想要寄出的信放到邮筒里时, 你可以确定邮递员会把信件送到收信人那里. 在这个比喻中, ...

  10. 操作Oracle 一条龙

    1 引用Oracle.DataAccess.dll 2 App.Config中配置连接字符串: Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TC ...