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) { }