Относительно Activity.getApplicationContext()

#android

#Android

Вопрос:

Я создал пользовательский адаптер для представления списка. В конструкторе адаптера я делаю следующее:

 public CustomListAdapter(Context context, int textViewResourceId,
        ArrayList<CatalogueItemListData> items,int width) {
    super(context, textViewResourceId, items);
    this.context =context;
            mInflater = LayoutInflater.from(context);
      }
  

В моем классе activity я вызываю адаптер, как показано ниже:

 this.m_adapter = new CustomListAdapter(this,
                    android.R.layout.simple_list_item_1, m_orders,displayMetrics.widthPixels);
            listView.setAdapter(this.m_adapter);
  

и я получаю результат, как на изображении ниже:
Вывод, когда контекст передается конструктору

Теперь, когда я меняю конструктор моего адаптера, как показано ниже:

  public CustomListAdapter(Activity activity, int textViewResourceId,
        ArrayList<CatalogueItemListData> items,int width) {
    super(activity.getApplicationContext(), textViewResourceId, items);
    this.context =activity.getApplicationContext();
            mInflater = LayoutInflater.from(context);
      }
  

Я получаю следующий вывод:

Вывод при использовании activity.getApplicationContext()

Может кто-нибудь любезно сказать мне, что может быть возможной причиной разницы в выходных данных? Заранее спасибо.

Комментарии:

1. ну, activity — это сам контекст, и он может отличаться от контекста вашего приложения. но почему это отличается от вашей причины… Не знаю.

Ответ №1:

Я бы сказал, что вы применили другую тему к вашей конкретной деятельности, а затем ко всему приложению. Это может привести к различию в стилях в зависимости от используемого контекста. Я не уверен, что это то, что происходит, но это имело бы смысл.

Комментарии:

1. Привет, я не использую какую-либо тему в своем приложении и не делаю изменений в отношении этого действия.

Ответ №2:

В контексте вашего приложения будет использоваться ранее определенная тема (или тема по умолчанию), в то время как контекст вашей активности не будет, если вы не вызовете его явно.

Надеюсь, это поможет!

Комментарии:

1. Привет, не могли бы вы любезно сказать мне, что «где в контексте вашей активности не будет, если вы не вызовете его явно». имею в виду?

2. Итак, правильным способом было бы вызвать activity.getApplicationContext() ?

3. Либо это нормально, просто имейте в виду, что getApplicationContext унаследует тему, установленную в вашем Android-манифесте (или тему по умолчанию).