一般listview都是一种样式,但如果出现 多种样式 ,类似于这一条item是 文字 下一条是图片 在下一条是文字加图片,也许你会说 那就在那就在一个xml文件里面写三者样式呗。那如果是 一百个呢。。哇。。这维护起来 可是个大工程,我可不想加班。


先上图片看看样子:两种样式     只为了为了说明问题


那么方法来了,使用getViewTypeCount和getItemViewType

getViewTypeCount 方法返回的是 你有几种样式  返回时是 int类型

getItemViewType 返回值 是你某一种样式 的类型 是什么。。返回值也是  int类型 ,意思是  代表 A类型的 是 数字 1.。。就是这意思

两个方法很简单呢 直接上代码,基本没什么特别的,就是加了两个方法而已 

package com.org.mmp.Play;import java.util.List;import com.org.mmp.R;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;public class PlayAdapter extends BaseAdapter {/** * 标题的item */public static final int ITEM_TITLE = 0;/** * 二级菜单的item */public static final int ITEM_INTRODUCE = 1;private List mList;private Context context;private LayoutInflater inflater;// 两个样式 两个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);}}public PlayAdapter(Context context, List mList) {this.context = context;this.mList = mList;inflater = LayoutInflater.from(context);}@Overridepublic int getCount() {// TODO Auto-generated method stubSystem.out.println("mList.size()" + mList.size());return mList.size();}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn mList.get(arg0);}//返回 代表某一个样式 的 数值  @Overridepublic int getItemViewType(int position) {// TODO Auto-generated method stubreturn mList.get(position).type;}//两个样式 返回2@Overridepublic int getViewTypeCount() {// TODO Auto-generated method stubreturn 2;}@Overridepublic long getItemId(int arg0) {// TODO Auto-generated method stubreturn arg0;}@Overridepublic 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 {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;}}
代码位置

点击打开链接


更多相关文章

  1. Android(安卓)两个Fragment之间的跳转和数据的传递实例详解
  2. 安卓 SQLite数据库操作实例
  3. Android复制粘贴详解
  4. Android(安卓)ProgressBar 各种样式大全
  5. Android(安卓)中 byte类型数据大于0x7F时的比较
  6. Android的xml-Rpc实现
  7. Android开发实践:JNI函数签名生成器
  8. 【Android架构师java原理专题详解】一;泛型原理详解
  9. 构建Android自适应布局应用方案解析

随机推荐

  1. android intent flag
  2. Android(安卓)平台下使用 i2c-tools调试I
  3. Android BroadCastReciver学习笔记
  4. android的color值
  5. 《Android音频焦点机制深入理解》
  6. Android(安卓)修改状态栏颜色
  7. #Android Training# Animations
  8. Android Interprocess Communication(三)
  9. android上的漏洞挖掘方式和Fuzz
  10. Android 仿 WP7 布局