【No8.】ViewHolder的再次简化、优化写法 Cool!

package com.example.simpleviewholder;

import android.util.SparseArray;
import android.view.View;

/**
 * Viewholder的简化
 * 
 * @ClassName: ViewHolder
 * @Description: TODO
 * @author Simon
 * @date 2014-8-22 上午9:56:29
 */
@SuppressWarnings("unchecked")
public class ViewHolder {
	public static <T extends View> T get(View view, int id) {
		SparseArray<View> viewHolder = (SparseArray<View>) view.getTag();
		if (viewHolder == null) {
			viewHolder = new SparseArray<View>();
			view.setTag(viewHolder);
		}
		View childView = viewHolder.get(id);
		if (childView == null) {
			childView = view.findViewById(id);
			viewHolder.put(id, childView);
		}
		return (T) childView;
	}
}

以上是ViewHolder的优化写法、可以直接作为一个工具类放到Utils包里面;


对于SparseArray类的介绍我就不多说了大家直接看吧:http://blog.csdn.net/kaixinbingju/article/details/8658428



下面是用法:

public class MyAdapter extends BaseAdapter {
		private LayoutInflater mInflater;
		private List<String> list;

		MyAdapter(Context mContext,List<String> list) {
			mInflater = LayoutInflater.from(mContext);
			this.list = list;
		}

		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return list != null ? list.size() : 0;
		}

		@Override
		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return list.get(position);
		}

		@Override
		public long getItemId(int position) {
			// TODO Auto-generated method stub
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
			if (convertView == null) {
				Log.i("Simon", "convertView == null" + (convertView == null));
				convertView = mInflater.inflate(R.layout.item, parent, false);
			}

			TextView mTextView = ViewHolder.get(convertView, R.id.textView1);
			mTextView.setText(list.get(position).trim());

			return convertView;
		}

	}


是不是瞬间感觉自己的代码 高大上 了~




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值