自定义列表适配器中的 getApplicationContext()
getApplicationContext() in a Custom List-Adapter
我的代码在我的 Fragment Class 中有效,但在我的列表适配器中无效:
BackgroundWorker backgroundWorker = new BackgroundWorker(getActivity().getApplicationContext());
backgroundWorker.execute();
当我需要将此代码放入我的列表适配器时,'getApplicationContext' 部分是 "errored"。如何解决此问题并在我的列表适配器中使用此代码。 ('Tab2'中的class),
您可以将 ApplicationContext
的引用传递给列表适配器:
new ListAdapter(getActivity().getApplicationContext(), anotherArgs);
顺便说一下,您可以从任何视图 class 获取 Context
,我确定您的适配器可以访问父视图 class 以创建行项目视图。
你可以
将 context
传递给您的 adapter's
构造函数 OR,
从 views
中提取 context
用于您的 adpater
。
For inflating layouts in an Activity , you need Activity
context not ApplicationContext !!
您必须在适配器的构造函数中将 activity 上下文作为参数传递,并将其分配给本地上下文变量。
例如:
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) { }
在上面的代码中,您可以使用本地上下文,然后访问任何方法。
这是因为,
Fragment 总是映射到 activity 因此,GetActivity 方法可在 Fragment class 中访问。
GetActivity returns 一个 Activity 上下文并且此上下文可以访问 GetApplicationContext 方法
但是在您的适配器中,GetActivity 没有任何意义,因为它没有绑定到 activity 或者它的父级也不是。
希望对您有所帮助!!!
您可以通过两种方式做到这一点
将 context
从您的 activity 或片段 或 ,
传递给您的 Adapter's
构造函数
从 views
中提取 context
,用于 adpater
。您可以直接从视图中询问上下文,例如 viewObject.getContext().getApplicationContext()
另请记住,如果您需要扩充视图,您将需要 Activity 的上下文,因为应用程序上下文在那里不起作用。每个上下文(Activity、应用程序、baseContext 等)都有不同的职责并提供不同的设施。您必须根据需要进行选择。
这也是非常基本的事情。您必须学习 android 组件中的基本上下文用法。
我的代码在我的 Fragment Class 中有效,但在我的列表适配器中无效:
BackgroundWorker backgroundWorker = new BackgroundWorker(getActivity().getApplicationContext());
backgroundWorker.execute();
当我需要将此代码放入我的列表适配器时,'getApplicationContext' 部分是 "errored"。如何解决此问题并在我的列表适配器中使用此代码。 ('Tab2'中的class),
您可以将 ApplicationContext
的引用传递给列表适配器:
new ListAdapter(getActivity().getApplicationContext(), anotherArgs);
顺便说一下,您可以从任何视图 class 获取 Context
,我确定您的适配器可以访问父视图 class 以创建行项目视图。
你可以
将
context
传递给您的adapter's
构造函数 OR,从
views
中提取context
用于您的adpater
。
For inflating layouts in an Activity , you need
Activity
context not ApplicationContext !!
您必须在适配器的构造函数中将 activity 上下文作为参数传递,并将其分配给本地上下文变量。
例如:
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) { }
在上面的代码中,您可以使用本地上下文,然后访问任何方法。
这是因为,
Fragment 总是映射到 activity 因此,GetActivity 方法可在 Fragment class 中访问。
GetActivity returns 一个 Activity 上下文并且此上下文可以访问 GetApplicationContext 方法
但是在您的适配器中,GetActivity 没有任何意义,因为它没有绑定到 activity 或者它的父级也不是。
希望对您有所帮助!!!
您可以通过两种方式做到这一点
将
传递给您的context
从您的 activity 或片段 或 ,Adapter's
构造函数从
views
中提取context
,用于adpater
。您可以直接从视图中询问上下文,例如viewObject.getContext().getApplicationContext()
另请记住,如果您需要扩充视图,您将需要 Activity 的上下文,因为应用程序上下文在那里不起作用。每个上下文(Activity、应用程序、baseContext 等)都有不同的职责并提供不同的设施。您必须根据需要进行选择。 这也是非常基本的事情。您必须学习 android 组件中的基本上下文用法。