У меня есть действие с настраиваемым представлением в файле макета Xml:
<com.example.androidmontreal.mvp.infrastructure.views.AndroidRaceResultsView
android:id="@+id/raceResults"
android:layout_height="wrap_content"
android:layout_width="match_parent"/>
...
In the onCreate method of this activity I use Butterknife to inject my views:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mvp_main);
ButterKnife.inject(this);
...
}
В моем пользовательском представлении у меня есть список. Перед добавлением Butterknife я устанавливал адаптер для списка в методе onFinishInflate
:
@Override
protected void onFinishInflate() {
super.onFinishInflate();
...
listView.setAdapter(resultsAdapter);
}
Однако после добавления Butterknife я получаю NPE в строке, где я устанавливаю адаптер, потому что на этом этапе listview имеет значение Null.
Насколько я понимаю, представление создается только при вызове метода Butterknife.inject()
в Activity, но это происходит после того, как представление было раздуто. Чего я не могу понять, так это когда я должен установить адаптер для listView.
Изменить: кажется, что дочерние представления в моем пользовательском представлении имеют значение null, даже после того, как utterknife.inject()
был вызван для действия. Однако, если я добавлю вызов Butterknife.inject
к моему методу onFinishInflate
, я получу сообщение об ошибке, говорящее, что java.lang.IllegalStateException: Required view with id '2131034112' for field 'listView' was not found