如何在Android中获取BaseAdapter的上下文(context)

14

我有一个名为BinderData的类,它扩展了BaseAdapter。 我想获取基类的上下文。 我尝试使用getContext(),但在BaseAdapter的情况下不起作用。

我该如何获取这个类的上下文?

3个回答

32

另一个解决方案-

如果您有父组件,可以像这样直接访问上下文:

 public class SampleAdapter extends BaseAdapter {

            LayoutInflater inflater;

            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                if(inflater == null){
                Context context = parent.getContext();
                inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                }
                ...
                ...

                return convertView;
            }

    }

4
这应该是正确的答案。@Karakuri的回答效率低下。 - The Hungry Androider
你救了我的一天,上帝保佑你。这个方法非常有效。 - Vivek

14
创建一个构造函数,其中一个参数应该是一个Context对象,并将其存储在私有变量中。
public class SampleAdapter extends BaseAdapter {
    private Context context;

    public SampleAdapter(Context context) {
        this.context = context;
    }

    /* ... other methods ... */
}

2
我建议你在开始专门学习Android之前,先牢固掌握Java基础。 - Karakuri
它将上下文设置为null。 - Sid
你是传递了 null 吗?你需要传递一个有效的上下文。 - Karakuri
@Karakuri,嘿,我也得到了上下文为空的情况:( - Rupesh Nerkar
对于那些遇到上下文空值检查的人,请检查您创建适配器对象的方式。如果您是从Activity的onCreate方法中创建它,您可以简单地传递getApplicationContext()this - Aniket Thakur

6
Context context = parent.getContext();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接