convertView 缓存的好处

平时生活中,刷新浪微博,感觉滑动的时候不够流畅(MX3),用过另一个App叫FuuBo,滑动的效果比新浪微博好太多了,简直丝滑.

今天学到convertView,做了个小测试:

    在ListView中,当item较多,上下滑动的时候,不显示的item会被放入缓存中,如果去利用这些缓存的item,ListView的滑动效果会好很多!

Text Code(仅给出部分参考代码)::

不用缓存:

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			View view=View.inflate(MainActivity.this, R.layout.item,null);
			Button username = (Button) view.findViewById(R.id.username);
			Button password = (Button) view.findViewById(R.id.password);
			Button delete = (Button) view.findViewById(R.id.delete);
			CheckBox checkBox = (CheckBox) view.findViewById(R.id.checkBox);
			
			username.setText(people.get(position).getUsername());
			password.setText(people.get(position).getPassword());
			checkBox.setSelected(people.get(position).isCheck());
			delete.setTag(position);
			delete.setOnClickListener(this);
			
			return view;
		}

使用缓存:

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			ViewHolder vh = null;
			if (convertView == null) {
				vh = new ViewHolder();
				convertView = View.inflate(MainActivity.this, R.layout.item,
						null);
				vh.username = (Button) convertView.findViewById(R.id.username);
				vh.password = (Button) convertView.findViewById(R.id.password);
				vh.delete = (Button) convertView.findViewById(R.id.delete);
				vh.checkBox = (CheckBox) convertView
						.findViewById(R.id.checkBox);
				convertView.setTag(vh);
			} else {
				vh = (ViewHolder) convertView.getTag();
			}

			vh.username.setText(people.get(position).getUsername());
			vh.password.setText(people.get(position).getPassword());
			vh.checkBox.setSelected(people.get(position).isCheck());
			vh.delete.setTag(position);
			vh.delete.setOnClickListener(this);
			
			return convertView;
		}

把整个demo放到手机上测试的时候,差别非常明显!使用了缓存的demo就像女朋友的手~而没使用缓存的demo,简直就像我的手...........

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值