首页 > 代码库 > android listview多种布局 getViewTypeCount和getItemViewType
android listview多种布局 getViewTypeCount和getItemViewType
一般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<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; } }代码位置
点击打开链接
android listview多种布局 getViewTypeCount和getItemViewType
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。