PainMain
@PainMain

Как можно заменить ViewPagerApapter на другой?

Имеется ViewPager к нему прикреплён MyPagerAdapter, мне бы хотелось чтобы при определённом условии к примеру если catStr == "два" то тогда нужно ViewPager прикрепить уже к MyPagerAdapterTwo.

<androidx.constraintlayout.widget.ConstraintLayout>
    <com.google.android.material.tabs.TabLayout
            android:id="@+id/tabs_main"
            android:layout_width="match_parent"
            android:layout_height="44dp"
            android:background="?attr/colorPrimary"
            app:layout_constraintBottom_toBottomOf="parent"
            app:tabIndicatorColor="#FFAB40"
            app:tabMode="fixed"
            app:tabTextColor="@color/colorWhiteTransparent"
            style="@style/MyCustomTabLayout" />

    </androidx.constraintlayout.widget.ConstraintLayout>

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/viewpager_main"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@+id/constraintLayout" />


(MyPagerAdapterTwo идентичный за исключение что он выводит другие layout и текст в getPageTitle немного другой)

import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter

class MyPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) {

    override fun getItem(position: Int): Fragment {
        return when (position) {
            0 -> {
                FirstFragment()
            }
            1 -> FirstFragment()
            else -> {
                return FirstFragment()
            }
        }
    }

    override fun getCount(): Int {
        return 3
    }

    override fun getPageTitle(position: Int): CharSequence {
        return when (position) {
            0 -> "Счета"
            1 -> "Операции"
            else -> {
                return "Бюджет"
            }
        }
    }
}


Вот самое интересное при данном условии (МЕНЯЕТСЯ ТОЛЬКО ТЕКСТ В tabs_main НО layout ОСТАЁТСЯ ПРЕЖДНИМ)

override fun showCategory(catStr: String, catIcon: Int, catNav: Int) {
      
        val fragmentAdapter = MyPagerAdapter(supportFragmentManager)
        val fragmentAdapterTwo = MyPagerAdapterTwo(supportFragmentManager)

        if (catStr == "Финансы")
            viewpager_main.adapter = fragmentAdapter
        else if (catStr == "Задания")
            viewpager_main.adapter = fragmentAdapterTwo

        tabs_main.setupWithViewPager(viewpager_main)
    }

Какие могут быть предположения?
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы