如何从另一个类访问ArrayList?

时间:2015-08-28 09:33:55

标签: java android arraylist android-asynctask

我有ArrayList Car

ArrayList<Car> cars = new ArrayList<Car>();

我使用AsyncTask填充了我onCreate的{​​{1}}方法:

MainActivity.java

我希望它能在名为new fillCars().execute(); 的其他类中使用此ArrayList cars。我的问题是ModifyCars.java在方法AsyncTask上执行后,在所有类onCreate中,ArrayList MainActivity.java它&#39;填充,我可以使用其中的数据,但当我将其传递给cars时,它的大小等于ModifyCars.java

我用来传递此0的方法来创建类ArrayList的空构造函数并创建一个get方法。在类MainActivity.java中,我创建了一个ModifyCars.java的对象,并尝试使用我之前创建的get方法。这里是我用于此目的的代码:

MainActivity

MainActivity.java

public MainActivity(){ } //Here the method onCreate public ArrayList<Car> getCars(){ return cars; }

ModifyCars.java

如何在我的MainActivity MA = new MainActivity(); Log.d("prove",Integer.toString(MA.getCars().size())); //Here the size it's 0 课程中使用我的cars ArrayList(当然,已填充)?我做错了什么?

我在互联网上搜索但没有任何对我有用的东西。任何帮助都会非常感激。

提前致谢!

1 个答案:

答案 0 :(得分:2)

您正在创建MainActivity的新实例,这是您获得空数组列表的原因。 一个简单的解决方案是让您的arryalist静态并访问它,如下所示,

在MainActivity中:

&#13;
&#13;
static ArrayList<Car> cars = new ArrayList<Car>();
&#13;
&#13;
&#13;  并在您的ModifyCars.java中访问它,

&#13;
&#13;
    ArrayList<Car> myCars = MainActivity.cars
&#13;
&#13;
&#13;

但是,执行此操作的标准方法是,将数组列表发送到ModifyCars活动,同时通过intent调用它,如下所示,

&#13;
&#13;
            Intent i = new Intent(this, ModifyCars.class);
            i.putExtra("CAR_ARRAY_LIST", this.cars);
            startActivity(i);
&#13;
&#13;
&#13;

并且在ModifyCars活动中,您应该将其从intent中提取为

&#13;
&#13;
Intent i = getIntent();
ArrayList<Car> myCars = (ArrayList<Car>) i.getSerializableExtra("CAR_ARRAY_LIST");
&#13;
&#13;
&#13;