У меня есть карточка которая помимо прочей информации может содержать в себе изображение, слайдер изображений (сторонняя библиотека) или видео (YouTubeAPI). Раньше я в layout карточки просто указывал все три медиа элемента (изображение, слайдер, видео) и, в зависимости от нужд, изменял их видимость, скрывая ненужные элементы и оставляя видимым только нужный.
Потом я решил попробовать использовать фрагменты. Сделал три фрагмента, под каждый элемент (замечу что класс фрагментов содержит в себе всю логику элемента, ему стоит лишь передать параметры для инициализации, а все остальное он сделает сам), и попытался использовать в RecyclerView. Если раньше у меня в карточке было три элемента, то теперь я хотел просто помещать нужный мне фрагмент в специальный контейнер в карточке. Но не тут то было. В onBindViewHolder моего адаптера RecyclerView вот такой код заменяет только первый элемент:
ImageSliderFragment fragment = ImageSliderFragment.newInstance(currentItem.images, mContext);
fragmentManager.beginTransaction().replace(R.id.card_media_container, fragment).commit();
Также я прочитал что использование фрагментов в RecyclerView крайне нежелательно. Вопрос - стоит ли в данном случае использовать фрагменты, ради упрощения (эти фрагменты также используются в другом активити, к тому же раньше вся логика медиа элементов раньше была в адаптере RecyclerView, а теперь вынесена в ихние классы фрагментов). Или же стоит использовать старую схему - карточка сразу содержит в себе все медиа элементы, которые делаются видимыми/невидимыми и заполняются по мере необходимости? Но тогда возникает дублирование кода т.к. логика элементов опять будет в адаптере RecyclerView.
И если использование фрагментов оправдано - как правильно использовать их в RecyclerView? У меня почему-то заполняется только первый элемент.