62应用程序管理器的复杂UI显示&&复用convertView出现的BUG

来源:互联网 发布:电脑突然断电数据丢失 编辑:程序博客网 时间:2024/06/05 05:43

在应用程序管理器的复杂UI显示中,当我们拖动Listview界面的时候,下屏的第一个item出现后,程序挂掉了,打开logcat,发现提示的日志是空指针异常:


出现的空指针异常的行数在这一行上:

holder.icon.setImageDrawable(appInfo.getIcon());

那么为什么这行会出现空指针异常呢?原因如下:

ListView复用历史缓存的时候,每个ListView的item的布局是RelativeLayout,而“用户程序”和“系统程序”的小标签是自己new出现的TextView,两种不同类型的item,只需要加一个判断就ok了:

// 不仅需要检查是否为空,还需要检查是否是合适的类型去复用if (convertView != null && convertView instanceof RelativeLayout) {view = convertView;holder = (ViewHolder) view.getTag();}





0 0
原创粉丝点击