android list的初始化,android之List

在使用list做东西的时候出现空指针,查了半天资料

本来是这样的

List model;

LunchListAdapter adapter;//这是我重写的适配器

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

adapter = new LunchListAdapter(LunchList.this, R.layout.row, model);

model = new ArrayList();

.....//省略}

重点在倒数两行,本来我把List的初始化放在了onCreate里面,心想应该没有问题的,activity启动之后就会对它初始化了,后来我尝试着在第一行就初始化,结果就不报空指针异常,

后来发现,在初始化之前竟然把他当参数传了出去,结果就导致了空指针异常.

修改如下,初始化在前,使用在后:

List model;

LunchListAdapter adapter;//这是我重写的适配器

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

model = new ArrayList();

adapter = new LunchListAdapter(LunchList.this, R.layout.row, model);

.....//省略}

虽然很简单,但还是要总结一下的,空指针害人太深.

对于List的初始化还是有些讲究的.

List是一个接口,这个一看文档便知,所以对它初始化不能new List,而应该使用ArrayList或者LinkList(这些实例化了List接口),

List list = new ArrayList();

而且,如果你确定List里面存放的数据类型,可以直接初始化为这种List,

List list = new LinkedList();

这样能够快速的处理,存取数据就不用再进行类型转换,直接是String就行了,

如果在初始化时是这样的,

List list = new LinkedList();

那么在存储时就能存储各种类型的数据了,int,String,Map,甚至是你自己定义的class都可以.

当然这样在存取时候是要进行类型转换的,效率会低一些.

还有,关于空指针错误真的是很困扰人的一件事情,所以最好的解决方式就是在使用前 一定要保证完成正确的初始化.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值