2015-07-02 22 views
-3

嗨,我想通過使用Global Variable傳遞一個值。我創建了一個類文件,將其擴展爲Application,然後將其添加到我的Manifest如何在Adapter類中使用我的全局變量? Android

public class MyApplication extends Application {} 

之後,我已經創建了一個Adapter Class其擴展到BaseExpandableListAdapter,我搜索瞭如何設置和獲取全局變量我已經創建,發現這個

((MyApplication) getActivity().getApplication()).setMy_id(my_id); 

併成爲能夠得到我用這個

Integer my_id = ((MyApplication) getActivity().getApplication()).getMy_id(); 

在我Fragments,我可以用我的方法getMy_id()值,但把裏面的0時,我在getActivity()中有錯誤。我已經嘗試使用this,但它仍然說Cannot resolve method getApplication(),有沒有其他方法來獲取我的全局變量的值。

我這樣做是因爲我想爲我的ListView使用Cursor。我想創建一個Expandable ListView,其中數據來自我的數據庫,並且我的Cursor有一個參數,它的WHERE條件中將使用我的全局變量中的數據。

我之所以將它作爲全局變量使用,是因爲我在不同的Fragments中使用此數據,它不是靜態的,它的值取決於所選項目。

預先感謝您。

+0

發表一些代碼並解釋你正在嘗試做什麼。我不太明白。我可能是錯的,因爲我不知道你想要在這裏以及爲什麼,但它似乎不是最好的做法。 – Peyman

+0

如果它是一個全局變量,爲什麼不把它變成靜態的並且直接引用它呢。我肯定錯過了什麼? –

+0

我不能讓它成爲靜態的,因爲只要你從列表視圖中點擊,id就會改變,並且會轉到另一個列表視圖,其中所選項目的id將被傳遞給另一個列表視圖。 –

回答

1

你需要在你的類的構造函數擴展BaseExpandableListAdapter。定義的構造函數應該接收Context類型的參數。這裏是例子 -

private Context mContext; 

public YourExpandableListAdapter(Context context) { 
    mContext = context; 
    Integer my_id = ((MyApplication) context.getApplicationContext()()).getMy_id(); 
} 

現在,在您的活動創建這樣一個實例 -

YourExpandableListAdapter ob = new YourExpandableListAdapter(this); 

這應該工作。

+0

我可以在片段內使用這個嗎? –

+0

在你的片段中,你不需要上下文實例,因爲你的片段有一個名爲getActivity()的函數,所以可能會使用它。 – Varundroid

+0

非常感謝你! –

1

我不確定你想要達到什麼目標,但無論你在做什麼,對我來說似乎都很難受!按回答你的問題,getApplication()需要一個背景,所以當你

((MyApplication) getActivity().getApplication()) 

你基本上是使用activitiy的(getActivity())上下文。並且您不能在Adapter課程中致電getActivity()。嘗試將您的活動的上下文從活動傳遞到構造函數中的適配器,如。

MyAdapter myAdapter = new MyAdapter(this); //This line will be in your activity, and this will be the instance of your activity 

而且適配器的構造看起來像

public MyAdapter(Context context){ 
    //Use this context to get the application instance, something like 
    Integer my_id = ((MyApplication) context.getApplication()).getMy_id(); 
} 
+0

嗨,謝謝你的回答。我試圖將my_id傳遞給我的適配器類,因爲在我的適配器類中,我試圖創建一個查詢,將用於填充我的可展開列表視圖。我嘗試了你建議要做的事情,但我仍然有同樣的錯誤。 –