Как стать автором
Обновить

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

Минусы:
* Нельзя добавить свое представление;
* Сложнее менять стили;
* Прочие минусы кастомизации (такое решение подойдет для простых списков, без Refresh, подгрузок и прочего...).

Можно. Достаточно переопределить onCreateView и в layout проставить листу android.R.id.list в ид. Можно даже добавить empty view с идом android.R.is.empty.

<FrameLayout>
   <ListView android:id="@android:id/list"/>
   <TextView android:id="@android:id/empty/>
</FrameLayout>


Ок, постараюсь сегодня дописать про это.
Хорошая статия.
Есть вопрос, я придерживаюсь принципу что у всех мойх активити и фрагментов есть родителский класс BaseActivity и BaseFragment. Что исключает вазможность использования ListFragment и т.д. Но хочется :) Есть какой нибудь решение при таких обстоятелствах?
Отнаследовать ListFragment от BaseFragment? :)
Не, я хочу использовать тот ListFragment, который уже есть в Andeoid API :) Но не могу унаследовать мой фрагменты от ListFragment, так как они унаследуется от BaseFragment.
Понял. Я когда-то для таких целей делал BaseFragment и BaseListFragment, а их общую логику выносил композицией.
Есть, по моему проблем с ListFragment больше, чем плюсов, так как у списка может быть еще состояние «Ошибка при получении данных». Конечно, это решаемая проблема, но решаемая как то неудобно и неприятно. Лично я даже сделал библиотечку для этого, брал исходную реализацию, переделывал для нее апи и выносил все это в отдельный виджет, которым можно обернуть что угодно, хоть список, хоть часть экрана. Вьюхи же для состояний просто задавались через xml. И таких библиотек немало. По личному опыту, такой подход намного более гибкий.
Зависит от проекта. Например в другом приложении, я отказался от ListFragment, и реализовал свою логику и представления.
Ну, все зависит от проекта.
Я как-то писал приложение под Android на Scala с использованием вот этого плагина, и там я подобную проблему решил с применением trait'ов.
Каких-то решений с использованием Java я не знаю, увы.
А в чем преимущество перед ListView?
Не совсем правильно сравнивать их, ListView все-таки базовый класс и его далеко не всегда можно будет заменить ListFragment-ом.

Но повторю еще раз то, что уже писал в статье: с этим фрагментом у вас уже есть адаптер и «слушатель», методы которых вы можете сразу использовать без инициализации (более того, вам не нужно заботиться об их восстановлении/обнулении), а также у вас есть анимация с empty-текстом, которые используются для разных состояний списка.
Используя данный подход в своем приложении столкнулся с трудностью: во время добавления хидера к списку вся разметка хидера корежится и сжимается до размеров элемента списка. Может ли быть причина в определенных ограничениях ListFragment?
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.