我通常如何访问我的应用程序:
MyApplication myApp = (MyApplication)this.getApplication();
但这不能从
完成public class MyArrayAdapter extends ArrayAdapter<SomeObject> {}
因为getApplication()是一种活动方法。有没有办法从ArrayAdapter访问应用程序?
答案 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();