Android常用控件ListView的简单优化之一: 在ViewHolder中定义static静态内部类

来源:互联网 发布:PHP str_split函数例子 编辑:程序博客网 时间:2024/04/30 05:58

首先,定义一个静态的内部类

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


0 0
原创粉丝点击