Java Android:适配器内的静态变量为null
我在这里试过了所有可能的问题,但都绕不开 我有一个java fileandroid活动,我在其中声明Java Android:适配器内的静态变量为null,java,android,static,android-arrayadapter,Java,Android,Static,Android Arrayadapter,我在这里试过了所有可能的问题,但都绕不开 我有一个java fileandroid活动,我在其中声明 private someAdapter someAdapterObj; 在onCreate内部,我调用构造函数并获得适配器的实例化 this.someAdapterObj= new someAdapter (this, R.layout.item_row,someAdapter.getAllNews()); 在某个适配器文件中,我有 privat
private someAdapter someAdapterObj;
在onCreate内部,我调用构造函数并获得适配器的实例化
this.someAdapterObj= new someAdapter (this,
R.layout.item_row,someAdapter.getAllNews());
在某个适配器文件中,我有
private static someArrayList;
我还有一个addtoarraylist在一些适配器中
现在,我从mainActivity中的onCreate调用addtoarraylist,但在实例化适配器之前。这应该是可能的,因为arraylist是静态的。但是,当我添加到arraylist时,我得到了一个nullpointer异常。有人能帮我吗?任何类型为类而非原语的实例或静态变量默认为null。您需要对其进行初始化-例如:
private static List<Foo> someArrayList = new ArrayList<Foo>();
然而:
ArrayList不是线程安全的,因此需要同步
像这样使用静态变量有点像代码嗅到全局状态;如果您可以适当地连接组件,这样就不需要任何全局状态,那么它通常会更干净
类型为类而不是基元的任何实例或静态变量默认为null。您需要对其进行初始化-例如:
private static List<Foo> someArrayList = new ArrayList<Foo>();
然而:
ArrayList不是线程安全的,因此需要同步
像这样使用静态变量有点像代码嗅到全局状态;如果您可以适当地连接组件,这样就不需要任何全局状态,那么它通常会更干净
那么,您在哪里初始化someArrayList?你还没有显示出来。你能添加一些适配器代码吗?@JonSkeet Mann..非常感谢。。我怎么没看到。。这正是问题所在。天哪,我从大楼里跳出来了@阿达姆兹纳杰德:嗨,琼斯基特的回答很有帮助。谢谢。@JonSkeet您应该添加您的评论作为答案,以便OP可以接受。您在哪里初始化someArrayList?你还没有显示出来。你能添加一些适配器代码吗?@JonSkeet Mann..非常感谢。。我怎么没看到。。这正是问题所在。天哪,我从大楼里跳出来了@阿达姆兹纳杰德:嗨,琼斯基特的回答很有帮助。谢谢。@JonSkeet您应该添加您的评论作为答案,以便OP可以接受