如何在Adapter类中使用我的全局变量?的Android

时间:2015-07-02 00:19:13

标签: java android adapter expandablelistadapter

您好我尝试使用Global Variable传递值。我创建了一个类文件,将其扩展为Application,然后将其添加到Manifest

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()方法,但在将其放入BaseExpandableListAdapter时,我在getActivity()中出错了。我已经尝试过使用this,但仍然说Cannot resolve method getApplication(),是否有其他方法可以获取全局变量的值。

我这样做是因为我试图将Cursor用于我的ListView。我想创建一个Expandable ListView,其数据来自我的数据库,我的Cursor有一个参数,用于WHERE条件,我的全局变量中的数据将被使用。

我之所以将其用作全局变量,是因为我在不同的Fragments中使用此数据而不是静态的,它会更改其值取决于所选项目。

提前谢谢你。

3 个答案:

答案 0 :(得分:1)

我不确定你想要实现的目标,但无论你做什么,对我来说都是好看的!根据你的问题回答,getApplication()需要一个上下文,所以当你做

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

您实际上是在使用activitiy(getActivity())上下文。而且您无法在getActivity()课程中致电Adapter。尝试将活动的上下文从活动传递到构造函数中的适配器,例如。

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();
}

答案 1 :(得分: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);

这应该有用。

答案 2 :(得分:0)

对我来说,以上所有方法均无效。试试这个:

((MyApplication) context.getApplicationContext()).getMy_id();