首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

应用ViewHolder模式提高效率

2012-09-19 
使用ViewHolder模式提高效率??? ? ? ?public View getView(int pos, View convertView, ViewGroup parent)

使用ViewHolder模式提高效率

?

?? ? ? ?public View getView(int pos, View convertView, ViewGroup parent){?

?? ? ? ? ? ?ViewHolder holder;

?? ? ? ? ? ?if (convertView == null) {?

?? ? ? ? ? ? ? ?convertView = mInflater.inflate(R.layout.list_item, null);?

?? ? ? ? ? ? ? ?holder.text = (TextView) convertView.findViewById( R.id.text));

?? ? ? ? ? ? ? ?holder.icon = (ImageView) convertView.findViewButId( R.id.icon));

?? ? ? ? ? ? ? ?convertView.setTag(holder);?

?? ? ? ? ? ? ? ?}

?? ? ? ? ? ?else {?

?? ? ? ? ? ? ? ?holder = (ViewHolder) convertView.getTag();?

?? ? ? ? ? ? ? ?}

?? ? ? ? ? ?holder.text.setText(DATA[pos]);?

?? ? ? ? ? ?holder.icon.setImageBitmap((pos & 1) == 1 ? mIcon1 : mIcon2);

?? ? ? ? ? ? ? ?return convertView;

// ? ? ? ? ? ? ? ?holder = new ViewHolder();

?? ? ? ? ? ? ? ?}?

?

// ? ? ViewHolder 模式, 效率提高 50%?

?? ? ? ?static class ViewHolder {?

?? ? ? ? ? ?TextView text;

?? ? ? ? ? ?ImageView icon;

?? ? ? ? ? ?}?

?

// ? ? ? ?内存分配 不要创建 Java 对象 在性能敏感的代码里, 尽量避免创建 Java 对象

?? ? ? ? ? 测量: 布局: onMeasure() onLayout() 绘图:

?? ? ? ? ? 事件处理: dispatchTouchEvent(), onTouchEvent()

?? ? ? ? ?Adapter: getView(), bindView()

?? ? ? ? ?GC, 垃圾回收

?? ? ? ? ?整个程序会暂停 慢 (大约几百个毫秒)

?

1 楼 aaaaaaa7a 2011-11-26   博主,请问后面那段“// 内存分配 不要创建java对象……”的意思是不是指那几个方法会引起垃圾回收从而导致程序暂停一下?

热点排行