listView中多种布局

在xml中可以写2(多个布局)

在java代码中适配器中

重写2个新的方法

<span style="font-size:18px;">@Override
	// 获得当前条目的种类(判断是第几种布局返回第几种id从0开始计算)
	public int getItemViewType(int position) {

		Data data = list.get(position);
		// 如果包含图片地址,返回0;
		if (data.getImgs().contains("jpg")) {

			return 0;
		} else {
			// 如果不包含图片地址,返回1;
			return 1;
		}
	}

	@Override
	// 设置listVIew条目布局的类型总数
	public int getViewTypeCount() {

		return 2;
	}</span>

在重写的getView方法中

<span style="font-size:18px;">@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// 获取当前条目显示的类型
		int itemViewType = getItemViewType(position);
		// /优化//
		ViewHolder1 holder1 = null;
		ViewHolder2 holder2 = null;
		if (convertView == null) {
			switch (itemViewType) {

			case 0:
				// 根据数据类型,加载有图片的布局文件
				convertView = View.inflate(context, R.layout.item1, null);
				holder1 = new ViewHolder1();
				
				
				ImageLoader instance = ImageLoader.getInstance();
		
				holder1.imageView = (ImageView) convertView
						.findViewById(R.id.imageView);
				holder1.tv_title = (TextView) convertView
						.findViewById(R.id.tv_title);
				holder1.tv_date = (TextView) convertView
						.findViewById(R.id.tv_date);
				holder1.tv_copyright = (TextView) convertView
						.findViewById(R.id.tv_copyright);

				convertView.setTag(holder1);
				break;
			case 1:
				// 根据数据类型,加载没有图片的布局文件
				convertView = View.inflate(context, R.layout.item2, null);
				holder2 = new ViewHolder2();
				holder2.tv_title = (TextView) convertView
						.findViewById(R.id.tv_title);
				holder2.tv_date = (TextView) convertView
						.findViewById(R.id.tv_date);
				holder2.tv_copyright = (TextView) convertView
						.findViewById(R.id.tv_copyright);
				convertView.setTag(holder2);
				break;

			}

		} else {

			switch (itemViewType) {
			case 0:
				holder1 = (ViewHolder1) convertView.getTag();
				break;
			case 1:
				holder2 = (ViewHolder2) convertView.getTag();
				break;

			}

		}

		// 给控件赋值
		Data data = list.get(position);
		switch (itemViewType) {
		case 0:
//			holder1.imageView.setImageResource(R.drawable.ic_launcher);
			ImageLoader instance = ImageLoader.getInstance();
			instance.displayImage(data.getImgs(), holder1.imageView);
			holder1.tv_copyright.setText(data.getCopyright());
			holder1.tv_date.setText(data.getPubDate());
			holder1.tv_title.setText(data.getTitle());
			break;

		case 1:
			holder2.tv_copyright.setText(data.getCopyright());
			holder2.tv_date.setText(data.getPubDate());
			holder2.tv_title.setText(data.getTitle());
			break;
		}

		return convertView;

	}</span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值