如何我經常訪問我的應用程序:如何從自定義ArrayAdapter訪問我的應用程序?
MyApplication myApp = (MyApplication)this.getApplication();
但是這不能從
public class MyArrayAdapter extends ArrayAdapter<SomeObject> {}
完成,因爲getApplication()是一個活動的方法。有沒有辦法從ArrayAdapter訪問應用程序?
如何我經常訪問我的應用程序:如何從自定義ArrayAdapter訪問我的應用程序?
MyApplication myApp = (MyApplication)this.getApplication();
但是這不能從
public class MyArrayAdapter extends ArrayAdapter<SomeObject> {}
完成,因爲getApplication()是一個活動的方法。有沒有辦法從ArrayAdapter訪問應用程序?
一般來說,你的應用程序應該是你程序的單例。所以,最簡單的方法就是對應用程序對象進行靜態引用。
class MyApp extends Application {
static MyApp myAppInstance;
public MyApp() {
myAppInstance = this;
}
public static MyApp getInstance() {
return myAppInstance;
}
}
然後在你的適配器,你可以叫MyApp.getInstance()
如果爲適配器創建一個構造函數,要求調用活動傳遞MyApplication參數,則可以使用該對象。例如:
private MyApplication myApp;
public void MyArrayAdapter(MyApplication app){
myApp = app;
//do other setup stuff here
}
然後,要創建活動中的適配器,你可以這樣做:
MyArrayAdapter myAdapter = new MyArrayAdapter(this.getApplication());
我們一般通過活動的定製陣列適配器的上下文。從這個上下文中可以調用應用程序的東西
MyApplication myApp = (MyApplication)context.getApplication();
我喜歡這一點,似乎是一個更便捷的方式在任何地方訪問應用程序實例。 – TimSim
謝謝,如果您認爲這是一個更好的選擇,您可以不接受以前的答案並採用我的答案。 – Robin