Как получить контекст для BaseAdapter в Android

У меня есть класс с именем BinderData, который расширяет BaseAdapter. Я хочу получить контекст базового класса. Я пытался использовать getContext(), но это не работает в случае BaseAdapter.

Как я могу получить контекст этого класса?


person Sid    schedule 16.05.2013    source источник


Ответы (2)


Еще одно решение:

Если у вас есть родитель, вы можете напрямую получить доступ к контексту, например так:

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

    }
person My God    schedule 20.02.2014
comment
Это должен быть правильный ответ. @ Ответ Каракури неэффективен. - person The Hungry Androider; 29.08.2014
comment
вы спасли мой день благослови вас бог. это сработало как шарм - person Vivek; 10.07.2019

Создайте конструктор, который принимает Context в качестве одного из своих аргументов, и сохраните его в закрытой переменной.

public class SampleAdapter extends BaseAdapter {
    private Context context;

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

    /* ... other methods ... */
}
person Karakuri    schedule 16.05.2013
comment
Я предлагаю вам получить твердое представление об основах Java, прежде чем вы начнете конкретно заниматься Android. - person Karakuri; 16.05.2013
comment
Он устанавливает контекст как нулевой. - person Sid; 16.05.2013
comment
Вы передаете его null? Вам нужно передать ему допустимый контекст. - person Karakuri; 16.05.2013
comment
@Karakuri, эй, я также получаю контекст как ноль :( - person Rupesh Nerkar; 04.07.2013
comment
Для тех, кто получает контекст null, проверьте, как вы создаете объект адаптера. Если вы создаете его из метода onCreate Activity, вы можете просто передать getApplicationContext() или this. - person Aniket Thakur; 17.03.2015