ListView Item多种布局优化

之前一直都不知道ListView有多种布局的优化方法,只能通过隐藏来实现,自己也知道效率肯定是很低的,但是也不知道有什么方法,这些天又查了一些资料,然后知道 其实google早就帮我们想好了优化方案了。


假设你的ListView Item有三种布局样式的可能:就比如很简单的显示一行字,要靠左,居中,靠右。

这时我们就可以在BaseAdapter里面重写两个方法:

private static final int TYPE_LEFT = 0;
private static final int TYPE_CENTER = 1;
private static final int TYPE_RIGHT = 2;

@Override
public int getViewTypeCount() {
	return 3;
}

//假如我们的数据列表是list,里面的Bean有一个属性(type)是表明这个item应该使用哪种布局的。
@Override
public int getItemViewType(int position) {
	return list.get(position).type;
}

//然后在我们的getView方法就可以这样了

@Override
public View getView(int position, View convertView, ViewGroup parent) {
	int type = getItemViewType(position);
	ViewHoldLeft holdLeft;
	ViewHoldCenter holdCenter;
	ViewHoldRight holdRight;
	
	if (convertView == null) {
		switch(type) {
			case TYPE_LEFT:
				holdLeft = new ViewHoldLeft();
				convertView = xxxxxx//像普通的一样
				holdLeft.textView = xxxxxx//像普通的一样
				holdLeft.textView.setText("holdLeft");
				convertView.setTag(holdLeft);
				break;
			case TYPE_CENTER:
				holdCenter = new ViewHoldCenter();
				convertView = xxxxxx//像普通的一样
				holdCenter.textView = xxxxxx//像普通的一样
				holdCenter.textView.setText("holdCenter");
				convertView.setTag(holdCenter);
				break;
			case TYPE_RIGHT:
				holdRight = new ViewHoldRight();
				convertView = xxxxxx//像普通的一样
				holdRight.textView = xxxxxx//像普通的一样
				holdRight.textView.setText("holdRight");
				convertView.setTag(holdRight);
				break;
			default:
				break;
		}
	} else {
		switch(type) {
			case TYPE_LEFT:
				holdLeft = (ViewHoldLeft)convertView.getTag();
				holdLeft.textView.setText("holdLeft");
				break;
			case TYPE_CENTER:
				holdCenter = (ViewHoldCenter)convertView.getTag();
				holdCenter.textView.setText("holdCenter");
				break;
			case TYPE_RIGHT:
				holdRight = (ViewHoldRight)convertView.getTag();
				holdRight.textView.setText("holdRight");
				break;
			default:
				break;
		}
	}
	return convertView;
	
}


private static class ViewHoldLeft {
	private TextView textView;
}

private static class ViewHoldCenter {
	private TextView textView;
}

private static class ViewHoldRight {
	private TextView textView;
}


gogle还是很人性的。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值