如何从自定义ArrayAdapter访问我的应用程序?

时间:2014-03-01 14:17:37

标签: android

我通常如何访问我的应用程序:

MyApplication myApp = (MyApplication)this.getApplication();

但这不能从

完成
public class MyArrayAdapter extends ArrayAdapter<SomeObject> {}

因为getApplication()是一种活动方法。有没有办法从ArrayAdapter访问应用程序?

3 个答案:

答案 0 :(得分:5)

如果为适配器创建一个构造函数,要求调用活动传递MyApplication参数,则可以使用该对象。例如:

private MyApplication myApp;

public void MyArrayAdapter(MyApplication app){
    myApp = app;
    //do other setup stuff here
}

然后,要在活动中创建适配器,您可以执行以下操作:

MyArrayAdapter myAdapter = new MyArrayAdapter(this.getApplication());

答案 1 :(得分:2)

一般来说,您的应用程序应该是您程序的单例。因此,最简单的方法是创建应用程序对象的静态引用。

class MyApp extends Application {
    static MyApp myAppInstance;
    public MyApp() {
        myAppInstance = this;
    }
    public static MyApp getInstance() {
        return myAppInstance;
    }
}

然后在您的适配器中,您可以调用MyApp.getInstance()

答案 2 :(得分:0)

我们通常将活动的上下文传递给自定义数组适配器。从该上下文中,use可以调用Application stuff。

MyApplication myApp = (MyApplication)context.getApplication();