android图文混排与多种类型listView的混搭的item的demo,getItem

工作中经常遇到一个listView里面的item是不同样式的,以前考虑的是在getView实现不同的样式,那样的话效率应该低,也没有那么方便,下面就把最近新学到的东西整理下。就是图文混排的一个listView 其实很简单。

主要是getItemViewType()和getViewTypeCount()的使用

实体数据类 很简单

创建mainActivity

代码很简单,,ItemData是一个实体bean类,里面只有一个id,和一个type都是int类型,和一个构造方法 MainActivity主要是设置数据list 和 设置adapter

三个Xml布局主要用来显示三种不同类型的item 其中一个图片 item_imageview.xml 和一个文本 item_text.xml 和一个按钮 item_button.xml

/**

主要的adapter

*/

public class ImageTextAdapter extends BaseAdapter implements View.OnClickListener {

private Context mContext;//上下文 private ArrayList<ItemData> mList;//MainActivity传过来的数据 private LayoutInflater mInflater;//用来加载布局 public ImageTextAdapter(Context context, ArrayList<ItemData> mList) { this.mContext = context; this.mList = mList; mInflater = LayoutInflater.from(mContext); }/**

主要是这个方法 虽然很简单 ,但是很实用,且容易被忽视。

这个方法是adapter里面可以重写的得到item的类型

返回的是根据position得到数据里的类型

*/ @Override public int getItemViewType(int position) { return mList.get(position).type; }/**

得到类型的条数 也就是说 这个listView一共支持几种类型的展示形式

可以理解成是要加载几个item的xml文件

*/ @Override public int getViewTypeCount() { return mList.size(); } @Override public int getCount() { return mList.size(); } @Override public Object getItem(int position) { return mList.get(position); } @Override public long getItemId(int position) { return position; }/**

主要是这个方法在返回的时候可以进行逻辑的处理,根据需求返回需要的样式

*/ @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder=null; int type=getItemViewType(position);//根据Position得到类型 if (convertView==null){ holder=new ViewHolder();

//根据类型设置viewHoder if (type==1){ convertView=mInflater.inflate(R.layout.item_imageview,null); holder.imageView= (ImageView) convertView.findViewById(R.id.imageView); holder.imageView2= (ImageView) convertView.findViewById(R.id.imageView2); }else if(type==2){ convertView=mInflater.inflate(R.layout.itme_text,null); holder.textView= (TextView) convertView.findViewById(R.id.tv_item); }else { convertView=mInflater.inflate(R.layout.itme_button,null); holder.button= (Button) convertView.findViewById(R.id.button); } convertView.setTag(holder); }else{ holder= (ViewHolder) convertView.getTag(); }

我爱你….为了你的幸福,我愿意放弃一切—包括你。

android图文混排与多种类型listView的混搭的item的demo,getItem

相关文章:

你感兴趣的文章:

标签云: