首先,定义一个静态的内部类
static class ViewHolder {
TextViewnametv; //定义listView item中相应的控件
}
然后就可以在自定义的MyAdapter中的getView()方法中使用了
public class MyAdapter extends BaseAdapter {...........
@Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder viewHolder; if (view == null){ view = LayoutInflater.from(context).inflate(R.layout.cell,null); viewHolder = new ViewHolder(); viewHolder.nametv = (TextView) layout.findViewById(R.id.name); viewHolder.nametv.setText(lists.get(i).getName()); view.setTag(viewHolder); } else { viewHolder = (ViewHolder)view.getTag(); viewHolder.nametv.setText(lists.get(i).getName()); } return view; }............ }
如果item不是很多的话,可以使用,这样在初始化的时候,只加载一次,可以稍微得到一些优化;
不过,如果item过多的话,建议不要使用。因为static是Java中的一个关键字,当用它来修饰成员变量时,那么该变量就属于该类,而不是该类的实例。所以用static修饰的变量,它的生命周期是很长的,如果用它来引用一些资源耗费过多的实例(比如Context的情况最多),这时就要尽量避免使用了。
对于静态类请参考博文
http://www.cnblogs.com/kissazi2/p/3971065.html