2014-07-30 4 views
0

У меня есть активность с настраиваемое представление в его файле макета Xml: Установка адаптера на Listview в настраиваемое представление вводили нож для масла

<com.example.androidmontreal.mvp.infrastructure.views.AndroidRaceResultsView 
    android:id="@+id/raceResults" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent"/> 
    ... 

В OnCreate метод этой деятельности I используйте Butterknife, чтобы ввести мои взгляды:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.mvp_main); 

    ButterKnife.inject(this); 

    ... 

} 

В моем обычном представлении у меня есть listview. Перед добавлением ножа для масла я использовал, чтобы установить адаптер для ListView в методе onFinishInflate:

@Override 
protected void onFinishInflate() { 
    super.onFinishInflate(); 

    ... 

    listView.setAdapter(resultsAdapter); 
} 

С добавлением ножа для масла, однако, я получаю NPE на линии, где я установить адаптер, потому что на этом этапе ListView является нулем.

Я понимаю, что представление создается только при вызове метода Butterknife.inject() в Activity, но это происходит после того, как представление было завышено. Я не могу понять, когда я должен установить адаптер для listView.

Редактировать: Похоже, что представления детей на моем обычном представлении равны нулю, даже после того, как было вызвано utterknife.inject(). Если добавить вызов Butterknife.inject к моему onFinishInflate метод, однако, я получаю ошибку о том, что java.lang.IllegalStateException: Required view with id '2131034112' for field 'listView' was not found

ответ

0

Вы можете сделать это только после того, как

ButterKnife.inject (это);

Внутренне он заполняет переменную listView, поэтому он становится доступным для вас.

Убедитесь, что у вас есть

@InjectView(R.id.raceResults) 
AndroidRaceResultsView listView; 

в вас деятельности.

+0

Инъекционный вызов включен в мою активность, у которого нет доступа к полю listView на моем пользовательском представлении. Добавление запроса Inject к моему пользовательскому представлению вводит новую ошибку (см. Редактирование в вопросе) – DanielO

+0

ok, тогда вы лучше посмотрите https://github.com/mmBs/NavigationDrawerSI/blob/master/app/src /main/java/mmbialas/pl/navigationdrawersi/ui/navigationdrawer/NavigationDrawerView.java – avgx

+0

Вы должны проверить, что вы ввели свой пользовательский вид в действие, как в предыдущей ссылке, посмотрите, как NavigationDrawerView доступен в MainActivity – avgx

Смежные вопросы