为ListView添加适配器时,出现空指针异常

ListView是一个经常要使用的控件,大部分情况下,我们都会通过适配器来为ListView添加内容,即调用ListView中的setAdapter(ListAdapter adapter)方法,其参数adapter是我们单独定义的。在调用这个方法的时候,一旦出现空指针异常,我们的第一反应就是检查ListView有没有实例化,但是我们发现ListView已经实例化了还是会出现这种异常,这是为什么呢??或许就是因为我们的这个第一反应才导致问题这么纠结。

我今天就遇到了这样的问题,

parseBtn = (Button) findViewById(R.id.parse);
listView = (ListView) findViewById(R.id.listview);
parseBtn.setOnClickListener(new OnClickListener() {
	@Override
	public void onClick(View v) {
		persons = MainActivity.this.readXml();
		adapter = new ArrayAdapter<Person>(MainActivity.this,
			android.R.layout.simple_expandable_list_item_1, persons);
		listView.setAdapter(adapter);
         }
});
通过findViewById已经获取到了一个ListView对象,还是出现了空指针异常,当时实在想不明白,

然后我就想是不是setAdapter()方法的参数adapter是null导致的呢?通过检测发现adapter对象不是空的,我就更疑惑了,

然后我就进一步往前看,考虑是不是在实例化adapter时,new ArrayAdapter<Person>的参数是空的呢?前两个参数是不会有问题的,第三个参数persons是一个ArrayList<Person>对象(Person是另外的一个类),它有没有实例化呢?通过检查发现问题果然出在这,ArrayList<Person>没有实例化。实例化之后,问题果断解决。


所以在使用ListView或者与其比较类似的GridView时,为其添加适配器如果遇到空指针异常不妨往适配器身上考虑一下,

作为一个新手,为这个问题纠结了一晚上,不得不说这是一个艰辛但是美好的过程,写这篇博文记录一下,提醒自己不要再犯这种错误了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值