ListView中加载不同布局

最为项目中最常使用的控件,不可避免的会遇到问题,今天写项目时遇到需要去根据不同的条件判断去加载不同的布局:

首先在XML,定义一个listView的控件和两个不同的布局,任意都可以,这里写出最主要的代码:

<span style="font-size:14px;">public final class ViewHolder {
		public ImageView im;
		public TextView tv0, tv_title;
		public int position;
		public String id;
	}
	
	public class ViewHolder2{
		public TextView tv1, tv2, tv3, tvadd;
		public ImageView im1;
	}</span>

这是两个ViewHolder为类,我这里需要加载两个不同的布局,所以写两个就可以了,下面的都是以两个为例:

在Adapter中:

<span style="font-size:14px;">class ZXAdapter extends BaseAdapter {
		private Context context;
		private LayoutInflater inflater;
		final int TYPE_1 = 0;
		final int TYPE_2 = 1;

		public ZXAdapter(Context context) {
			this.context = context;
			inflater = LayoutInflater.from(context);
			allList = new ArrayList<ZXData>();
		}

		public void addzxlist(List<ZXData> datas) {
			allList = datas;
		}

		public void BindData(List<ZXData> datas) {
			allList.addAll(datas);
		}

		public void clear() {
			if (allList != null) {
				allList.clear();
			}
		}

		@Override
		public int getCount() {
			return allList.size();
		}

		@Override
		public Object getItem(int position) {
			return allList.get(position);
		}

		@Override
		public long getItemId(int position) {
			return position;
		}
		@Override
		public int getItemViewType(int position) {
			System.out.println("p1------+++>>>"+position);
			int p=position;
			if(p==0){
				return TYPE_1;
			}else {
				return TYPE_2;
			}
		}
		@Override
		public int getViewTypeCount() {
			return 2;
		}
		
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			ViewHolder holder = null;
			ViewHolder2 holder2 = null;
			int type=getItemViewType(position);
			if (convertView == null) {
				switch (type) {
				case TYPE_1:
					holder = new ViewHolder();
					convertView = inflater.inflate(
							R.layout.fragment_homeheart2, parent, false);
					holder.im = (ImageView) convertView
							.findViewById(R.id.home_pager);
					holder.tv_title = (TextView) convertView
							.findViewById(R.id.tv_title);
					convertView.setTag(holder);
					break;
					
				case TYPE_2:
					holder2 = new ViewHolder2();
					convertView = inflater.inflate(R.layout.item_home, parent,false);
					holder2.im1 = (ImageView) convertView
							.findViewById(R.id.item_zxim1);
					holder2.tv1 = (TextView) convertView
							.findViewById(R.id.item_zxtv1);
					holder2.tv2 = (TextView) convertView
							.findViewById(R.id.item_zxtv2);
					holder2.tv3 = (TextView) convertView
							.findViewById(R.id.item_zxtv3);
					holder2.tvadd = (TextView) convertView
							.findViewById(R.id.item_zxtvadd);
					convertView.setTag(holder2);
					break;
				}
			}else {
				switch (type) {
				case TYPE_1:
					holder = (ViewHolder) convertView.getTag();
					break;

				case TYPE_2:
					holder2 = (ViewHolder2) convertView.getTag();
					break;
				}
			}
			//设置资源
			switch (type) {
			case TYPE_1:
				holder.tv_title.setText(allList.get(0).getTitle());
				DownLoadImage.downLoadImage(getActivity(), holder.im, "http://"
						+ allList.get(position).getImageurl(), queue,
						imageCache);
				break;
			case TYPE_2:
				holder2.tv1.setText(allList.get(position).getTitle());
				holder2.tv2.setText(allList.get(position).getNumber());
				holder2.tv3.setText(allList.get(position).getHits());
				holder2.tvadd.setText(allList.get(position).getSubtitle());
				String string = "http://" + allList.get(position).getImageurl();
				if (string == null || string.equals("")) {
					holder2.im1.setImageResource(R.drawable.allshare);
				} else {
					DownLoadImage.downLoadImage(getActivity(), holder2.im1,
							string, queue, imageCache);
				}
				break;
			
			}
			return convertView;
		}
	}</span>

其实就是对
<span style="font-size:14px;">getItemViewType()和</span><pre name="code" class="java"><span style="font-size:14px;">getViewTypeCount()方法的使用!</span>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值