Вы можете использовать словарь:
x = 0
y = 1
z = 3
list=[]
dict = {0: 'c', 1: 'd', 2: 'e', 3: 'f'}
if x in dict:
list.append(dict[x])
else:
pass
if y in dict:
list.append(dict[y])
else:
pass
if z in dict:
list.append(dict[z])
else:
pass
print list
Версия 23.1.0 переключает NavigationView
на использование RecyclerView
(вместо предыдущего ListView
), и заголовок добавляется как один из этих элементов. Это означает, что не всегда доступно для вызова findViewById()
- требуется передать макет перед его присоединением к NavigationView
.
Для версии 23.1.1 поддержки Library, теперь вы можете получить ссылку на представление заголовка с помощью getHeaderView()
:
View headerLayout = navigationView.getHeaderView(0); // 0-index header
. Это имеет преимущество в работе над заголовками, добавленными через XML и через код.
Если вы по-прежнему используете 23.1.0, в соответствии с связанной ошибкой , вы можете раздуть заголовок в коде и использовать findViewById()
на этом:
View headerLayout =
navigationView.inflateHeaderView(R.layout.navigation_header);
panel = headerLayout.findViewById(R.id.viewId);
// panel won't be null
Пока вы не перейдете на 23.1.1.
Теперь с выпуском библиотеки поддержки дизайна 23.1.1 вы можете использовать
NavigationView navigationView = (NavigationView) findViewById(R.id.your_nav_view_id);
View header = navigationView.getHeaderView(0)
TextView text = (TextView) header.findViewById(R.id.textView);
Для меня это была та же ситуация с 23.1.0, после обновления становится исключение null-указателя. В этом случае NavigatorView
выглядит так:
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header"
app:menu="@menu/menu_nav"/>
Я попробовал предложение по решению ianhanniballake, но он не работает. Затем я завысил предложение:
LayoutInflater.from(getContext()).inflate(R.layout.nav_header, mNavigationView);
После этого я могу найти по id все виды, определенные в макете nav_heard
.
Так я сделал это с помощью ButterKnife
, и он работает для меня.
protected static class HeaderViewHolder {
@BindView(R.id.button)
Button button;
HeaderViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
, а затем используйте этот держатель вида следующим образом:
View header = navigationView.getHeaderView(0);
headerViewHolder = new HeaderViewHolder(header);