Android ListView addHeaderView () nullPointerException для предопределенных представлений, определенных в XML
Попытка использовать addHeaderView()
и addFooterView()
для ListView
. Если я попытаюсь использовать представление, которое я предопределл в XML для верхнего или нижнего колонтитула, я получаю исключение с нулевым указателем. Однако, если я динамически создаю View, используя код, он отлично работает …
// This doesn't work... nullPointerException ListView lv = (ListView) findViewById(R.id.my_list_view); TextView header = (TextView) findViewById(R.id.my_header); lv.addHeaderView(header); // This works fine ListView lv = (ListView) findViewById(R.id.my_list_view); TextView header = new TextView(this); TextView.setHeight(30); TextView.setText("my header text!"); lv.addHeaderView(header);
Моя трассировка стека:
Caused by: java.lang.NullPointerException at android.widget.ListView.clearRecycledState(ListView.java:522) at android.widget.ListView.resetList(ListView.java:508) at android.widget.ListView.setAdapter(ListView.java:440) at com.company.myapp.MyActivity.refreshList(MyActivity.java:85) at com.company.myapp.MyActivity.onCreate(MyActivity.java:37) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) ... 11 more
Любые подсказки?
- Доступ к индексу в циклах 'for'?
- Присоедините список элементов с разными типами в виде строки в Python
- Android: как отключить элементы списка при создании списка
- Добавить элемент в список В Scala
- Как закрепить два списка по-разному?
- Как отсортировать список словарей по значению словаря в Python?
- Есть ли функция сглаживания вложенного списка элементов?
- Android - drag and drop - переименование списка
- Как создать объект, который выводит список (не таблица)
- Какое лучшее имя для не-мутирующего метода «добавить» в неизменяемой коллекции?
- Использование в списке не обновляет значения модели
- Array versus List : когда использовать какой?
- Создание всех комбинаций из нескольких списков
РЕДАКТИРОВАТЬ:
вы просто не можете
View header = findViewById(R.layout.headerView); lst.addHeaderView(header);
Это НЕ будет работать, потому что просматриваемое представление has to be inflated
. В двух словах, когда вы setContentView
в начале вашей деятельности, инфраструктура Android автоматически раздувает представление и ставит его в действие . Чтобы раздуть ваш заголовок, все, что вам нужно сделать, это
View header = (View)getLayoutInflater().inflate(R.layout.headerView,null); ls.addHeaderView(header);
наконец, добавьте свой адаптер после того, как вы установите представление заголовка и запустите приложение. Вы должны увидеть свой заголовок с содержимым, которое вы вложили в ваш адаптер.
В моем случае это работает
View header = getLayoutInflater().inflate(R.layout.header, null); View footer = getLayoutInflater().inflate(R.layout.footer, null); ListView listView = getListView(); listView.addHeaderView(header); listView.addFooterView(footer); setListAdapter(new ArrayAdapter