2014-03-01 64 views
2

如何我經常訪問我的應用程序:如何從自定義ArrayAdapter訪問我的應用程序?

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

但是這不能從

public class MyArrayAdapter extends ArrayAdapter<SomeObject> {} 

完成,因爲getApplication()是一個活動的方法。有沒有辦法從ArrayAdapter訪問應用程序?

回答

1

一般來說,你的應用程序應該是你程序的單例。所以,最簡單的方法就是對應用程序對象進行靜態引用。

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

然後在你的適配器,你可以叫MyApp.getInstance()

+0

我喜歡這一點,似乎是一個更便捷的方式在任何地方訪問應用程序實例。 – TimSim

+0

謝謝,如果您認爲這是一個更好的選擇,您可以不接受以前的答案並採用我的答案。 – Robin

4

如果爲適配器創建一個構造函數,要求調用活動傳遞MyApplication參數,則可以使用該對象。例如:

private MyApplication myApp; 

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

然後,要創建活動中的適配器,你可以這樣做:

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

我們一般通過活動的定製陣列適配器的上下文。從這個上下文中可以調用應用程序的東西

MyApplication myApp = (MyApplication)context.getApplication(); 
相關問題