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.youkuaiyun.com/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;
}
}
是不是瞬间感觉自己的代码 高大上 了~