(转)Android ListView多种布局 getViewTypeCount和getItemViewType

    xiaoxiao2021-04-12  34

    原地址:http://blog.csdn.net/wanghao200906/article/details/41693859

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

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

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

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

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

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

    [java]  view plain  copy 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<ViewItem> 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<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() {           // 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 {               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;       }      }   代码位置

    点击打开链接

    转载请注明原文地址: https://ju.6miu.com/read-667099.html

    最新回复(0)