在使用list做东西的时候出现空指针,查了半天资料
本来是这样的
List<Restaurant> 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<Restaurant>();
.....//省略}
重点在倒数两行,本来我把List的初始化放在了onCreate里面,心想应该没有问题的,activity启动之后就会对它初始化了,后来我尝试着在第一行就初始化,结果就不报空指针异常,
后来发现,在初始化之前竟然把他当参数传了出去,结果就导致了空指针异常.
修改如下,初始化在前,使用在后:
List<Restaurant> 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<Restaurant>();
.....//省略}
虽然很简单,但还是要总结一下的,空指针害人太深.
对于List的初始化还是有些讲究的.
List是一个接口,这个一看文档便知,所以对它初始化不能new List,而应该使用ArrayList或者LinkList(这些实例化了List接口),
List<T> list = new ArrayList<T>();
而且,如果你确定List里面存放的数据类型,可以直接初始化为这种List,
List<String> list = new LinkedList<String>();
这样能够快速的处理,存取数据就不用再进行类型转换,直接是String就行了,
如果在初始化时是这样的,
List<Object> list = new LinkedList<Object>();
那么在存储时就能存储各种类型的数据了,int,String,Map,甚至是你自己定义的class都可以.
当然这样在存取时候是要进行类型转换的,效率会低一些.
还有,关于空指针错误真的是很困扰人的一件事情,所以最好的解决方式就是在使用前 一定要保证完成正确的初始化.
分享到:
相关推荐
List<Bean>转换为List<Map>, List<Object>转换为List<Object> list转化为 JsonArray ,list转换JsonArray
可将list<T>转化成JSON字符串 使用方法 例: List<自定义类> l; ListChangeToJson.ListChangeToJson classJson = new ListChangeToJson.ListChangeToJson(); classJson.ArrayToJsonAll(l, "数组名字");
一般使用springjdbc、hibernate的sql查询,库获取到的数据都是List<Map<String, Object>>结果集,如果我们要转化为JavaBean,则需要做一系列的map.get(),然后obj.set()。 此工程中就是解决List<Map<String, Object>...
- group list_topics <group_alias> <_type> <start> - group list_user_comments <topic_id> <user_alias> - group list_user_topics <start> - group rec_topic <topic_id> - group remove_comment <topic_id...
List<Long>转一维数组 Long[](csdn)————程序
一、List<T>对象中的T是值类型的情况(int 类型等) 对于值类型的List直接用以下方法就可以复制: List<T> oldList = new List<T>(); oldList.Add(..); List<T> newList = new List<T>(oldList); 二、List<T>对象...
基于新版本的POI编写的读取Excel文件数据的工具类,可根据绝对路径、File对象、InputSteam对象读取解析Excel文件内容,并返回List<List<String>>格式结果,其中包含对单元格公式的处理。
C#+List<T>+GridControl实现主从表嵌套
将list<Map>转换成JavaBean的工具类
主要实现读取xml文件内容然后转换成List<T>对象,两种实现方法。
Arraylist 和 List<T> 在使用的效率是不一样的,选择不同的集合 能使项目的性能有很大的提高!
完美实现了IList<T>绑定到DataGridView时的各列排序问题,Check列表头全选问题。
拆分list,将list<bean>中的内容根据某一属性的值对list进行拆分,分组
NetTiers在生成代码框架时,其默认的返回类型为TList<T>,有时候我们需要获取DataSet类型,在生成的代码框架的.Entities项目中,有ListBase.cs类,里面提供TLiset<T>转DataSet的方法,利用其生成方法会出现一些问题,如果...
C#中的集合示例(Array,ArrayList,Hashtable,List<T>)
范型List<T> Dictory<key,Value>增加事件功能 范型List<T> Dictory<key,Value>增加事件功能
List<Object>转Json的jar包
spring,cxf,restful发布webservice传递复杂对象,例如List,Map,List<Map>
此文件是一个工具类,方法为一个静态方法,调用后可以直接转换想要的结果,调用方法为 public static <T> List<T> buildTree(List<T> list)或者 public static <T> List<T> buildTree(List<T> list, String field...
intent 传递 ArrayList<T>