Android:Adapter内部的静态变量为null

时间:2013-01-19 22:06:56

标签: java android static android-arrayadapter

我在这里尝试了所有可能的问题,但无法绕过它。

我有一个java文件(android活动),我声明了

private someAdapter someAdapterObj;

在onCreate()中我调用构造函数并获取适配器实例化。

this.someAdapterObj= new someAdapter (this,
                       R.layout.item_row,someAdapter.getAllNews());

在someAdapter文件中,我有

private static someArrayList;

我在someAdapter中也有一个addtoarraylist()。

现在,我在mainActivity中调用onCreate中的addtoarraylist(),但是在我实例化适配器之前。这应该是可能的,因为,arraylist是静态的。但是,当我添加到arraylist时,我得到一个nullpointer异常。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:4)

任何类型为类(不是基元)的实例或静态变量默认为null。您需要初始化它 - 例如:

private static List<Foo> someArrayList = new ArrayList<Foo>();

然而

  • ArrayList不是线程安全的,因此您需要同步
  • 使用像这样的静态变量有点代码味道(全局状态);如果你可以适当地连接你的组件,那么你通常会更清洁,这样你就不需要任何全局状态了