关于ListView的不同view的加载问题

    今天有朋友问我为什么他的lisView加载不同的view会出问题

代码大概是下面的样子:

@Override

		public View getView(int position, View convertView, ViewGroup parent) {

			ViewHolder1 holder1 = null;

			ViewHolder2 holder2 = null;

			if(convertView == null){

					...

			}

			else{

				if(...) {

					holder1 = (ViewHolder1) convertView.getTag();

				} else {

					holder2 = (ViewHolder2) convertView.getTag();

				}

			}

			...

		}

  恩 问题来了 在这里的convertView在滚动之前可能保存的是第一种格式的内容 但在此时可能是要变成第二种了 这时候异常来了 不能做转换 那么问题在哪里呢?

在Adapter里面有这样2个函数getItemViewType getViewTypeCount这2个函数会被listview在布局的时候调用,这里必须要重载一下这2个函数,然后在getView中获取相应的type,值得注意的是其中的type类型必须是0~getViewType-1的整型值

当然同样可以不使用viewHolder 而采用layout的方式进行封装,2种的效率差不太多。

你可能感兴趣的:(ListView)