Мне нравится подход FragmentFactory
, который позволяет передавать зависимости фрагменту в конструкторе.
Я бы хотел использовать пользовательский FragmentFactory
вместе с FragmentStatePagerAdapter
.
Я размещаю пейджер просмотра в действии. Я могу создать настраиваемую фабрику фрагментов и назначить ее действию, используя
supportFragmentManager.fragmentFactory = CustomFragmentFactory()
. Затем я могу использовать supportFragmentManager
для инициализации моего FragmentStatePagerAdapter
. Пока все в порядке.
Моя проблема в том, что мои фрагменты в пейджере просмотра показывают данные, зависящие от позиции.
Допустим, у меня есть список items
и ItemFragment
, который показано на пейджере вида, показывающем items[position]
, следовательно, у него есть такой конструктор:
class ItemFragment(val item: Item) : Fragment()
Как мне реализовать функцию CustomeFragmentFactory
и FragmentStatePagerAdapter
s getItem(position: Int)
, чтобы получить безопасный эквивалент это:
override fun getItem(position: Int) = ItemFragment(items[position])