如下图,出现了空指针异常:
// 复用历史缓存的View对象
if (convertView == null) {
view = View.inflate(getApplicationContext(), R.layout.app_lock_item, null);
holder = new ViewHolder();
holder.iv_icon = (ImageView) findViewById(R.id.iv_applock_icon);
holder.iv_status = (ImageView) findViewById(R.id.iv_applock_status);
holder.tv_name = (TextView) findViewById(R.id.tv_applock_appname);
view.setTag(holder);
} else {// 为view做一个标记以便复用
view = convertView;
holder = (ViewHolder) view.getTag();
}
// 获取到当前应用程序对象
AppInfo appInfo = appinfos.get(position);
holder.iv_icon.setImageDrawable(appInfo.getAppicon());
holder.tv_name.setText(appInfo.getAppname());
异常定位的代码行是:
holder.iv_icon.setImageDrawable(appInfo.getAppicon());
只要利用View实例调用即可消除异常如下图:
holder.iv_icon = (ImageView) view.findViewById(R.id.iv_applock_icon);
holder.iv_status = (ImageView) view.findViewById(R.id.iv_applock_status);
holder.tv_name = (TextView) view.findViewById(R.id.tv_applock_appname);
view.setTag(holder);
下图是setContentView( )加载的布局,获得布局控件实例的方式可以是:
因此需要获得布局文件中控件的实例时,需要确定加载布局的方式,以及view实例,从而避免出现空指针异常出现。