读书人

ListView跟性能

发布时间: 2012-11-23 00:03:43 作者: rapoo

ListView和性能


一谈起ListView,我想大家都不陌生。而且最近该控件特别红,像QQ,人人和新浪客户端里都有它的影子。

其实实现ListView非常的简单。

我想大家都用过各种各样的控件,比如说一个最简单的TextView,我们都是在布局文件里加入TextView标签,然后在Activity里通过findViewById(int id)方法得到该对象的引用,最后调用TextView类的setText(CharSequence s)方法设置该控件的值。

同样,对于ListView,我们先在布局文件里这样添加标签:


public class MyPerformanceArrayAdapter extends ArrayAdapter<String> {  private final Activity context;  private final String[] names;  static class ViewHolder {    public TextView text;    public ImageView image;  }  public MyPerformanceArrayAdapter(Activity context, String[] names) {    super(context, R.layout.rowlayout, names);    this.context = context;    this.names = names;  }  @Override  public View getView(int position, View convertView, ViewGroup parent) {    View rowView = convertView;    if (rowView == null) {      LayoutInflater inflater = context.getLayoutInflater();      rowView = inflater.inflate(R.layout.rowlayout, null);      ViewHolder viewHolder = new ViewHolder();      viewHolder.text = (TextView) rowView.findViewById(R.id.TextView01);      viewHolder.image = (ImageView) rowView          .findViewById(R.id.ImageView01);      rowView.setTag(viewHolder);    }    ViewHolder holder = (ViewHolder) rowView.getTag();    String s = names[position];    holder.text.setText(s);    if (s.startsWith("Windows7") || s.startsWith("iPhone")        || s.startsWith("Solaris")) {      holder.image.setImageResource(R.drawable.no);    } else {      holder.image.setImageResource(R.drawable.ok);    }    return rowView;  }} 

根据统计信息,这样的优化设计,比最初的方法效率上要快15%以上。


Over...

读书人网 >移动开发

热点推荐