Java 自定义列表适配器中的getApplicationContext()

Java 自定义列表适配器中的getApplicationContext(),java,android,android-fragments,backgroundworker,Java,Android,Android Fragments,Backgroundworker,我有以下代码在片段类中工作,但在列表适配器中不工作: BackgroundWorker backgroundWorker = new BackgroundWorker(getActivity().getApplicationContext()); backgroundWorker.execute(); 当我需要将此代码放入我的列表适配器时,“getApplicationContext”部分是“errored”。如何修复此问题并在列表适配器中使用此代码。(在“Tab2”中的类中,您可以将Appl

我有以下代码在片段类中工作,但在列表适配器中不工作:

BackgroundWorker backgroundWorker = new BackgroundWorker(getActivity().getApplicationContext());
backgroundWorker.execute();

当我需要将此代码放入我的列表适配器时,“getApplicationContext”部分是“errored”。如何修复此问题并在列表适配器中使用此代码。(在“Tab2”中的类中,

您可以将
ApplicationContext
的引用传递给列表适配器:

 new ListAdapter(getActivity().getApplicationContext(), anotherArgs);
顺便说一下,您可以从任何视图类中获取
上下文
,我确信您的适配器可以访问父视图类来创建行项目视图。

您可以

  • 上下文
    传递给
    适配器的
    构造函数

  • 从您的
    adpater
    中使用的
    视图中获取
    上下文

要扩大活动中的布局,您需要
活动
上下文而不是应用程序上下文


您必须将活动上下文作为参数传递到适配器的构造函数中,并将其分配给本地上下文变量

例如:

公共类CustomAdapter扩展了ArrayAdapter{
私有数组列表;
语境;
公共CustomAdapter(ArrayList列表,上下文){
this.list=列表;
this.mContext=上下文;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父级){}
在上面的代码中,您可以使用本地上下文,然后访问任何方法

因为,

片段始终映射到活动,因此,可以在片段类中访问GetActivity方法

GetActivity返回一个活动上下文,该上下文可以访问GetApplicationContext方法

但是,在适配器中,GetActivity没有任何意义,因为它没有绑定到某个活动,或者它的父级也没有


希望这对你有所帮助!!!

你可以通过两种方式做到这一点

  • 上下文
    从活动或片段传递给
    适配器的
    构造函数

  • adpater
    中使用的
    视图中获取
    context
    。您可以像
    viewObject.getContext().getApplicationContext()那样直接从视图中请求上下文

  • 还请记住,如果需要膨胀视图,则需要活动的上下文,因为应用程序上下文在其中不起作用。每个上下文(活动、应用程序、baseContext等)都有不同的职责并提供不同的功能。您必须根据需要进行选择。
    这也是一件非常基本的事情。您必须学习android组件中的基本上下文用法。

    与问题分享您的适配器代码。为什么要对适配器使用应用程序上下文,传递初始化位置的上下文,并在适配器中使用标准上下文。
     public class CustomAdapter extends ArrayAdapter<YourModelclass> {
    
            private ArrayList<YourModelclass> list;
    
            Context mContext;
    
     public CustomAdapter(ArrayList<YourModelclass> list, Context context) {
                this.list = list;
                this.mContext=context;
    
            }
    
            @Override
            public View getView(int position, View convertView, ViewGroup parent) { }