如何在适配器 class 中使用我的全局变量? Android

How can I use my global variable inside an Adapter class? Android

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

public class MyApplication extends Application {}

之后我创建了一个扩展到 BaseExpandableListAdapterAdapter Class,我搜索了如何设置和获取我创建的全局变量并找到了这个

((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 中使用此数据,它不是静态的,它会根据所选项目更改其值。

提前谢谢你。

我不太确定你想要达到什么目的,但无论你在做什么,我都觉得很老套!根据回答您的问题,getApplication() 需要上下文,所以当您这样做时

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

您实际上是在使用活动的 (getActivity()) 上下文。而且你不能在 Adapter class 中调用 getActivity()。尝试将 activity 的上下文从 activity 传递到构造函数中的适配器,例如

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

您的 class 中需要有一个构造函数来扩展 BaseExpandableListAdapter。定义的构造函数应接收 Context 类型的参数。这是示例 -

private Context mContext;

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

现在在您的 activity -

中创建一个这样的实例
YourExpandableListAdapter ob = new YourExpandableListAdapter(this);

这应该有效。

对我来说,以上都不起作用。试试这个:

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