Viewpager2 and NoitfyDataSetChanged

147 Views Asked by At

I used Viewpager and all worked properly with my app. When changed from Viewpager to Viewpager2 and I made changes inside in Viewpager2, the changes are not visible on the screen. I implement the Viewpager2 with FragmentStateAdapter but I don't find solution for to use the notifyDataSetChanged which makes the changes in ViewPager. What can I do for to solve my problem?

Adapter for ViewPager2

class ViewPagerAdapter(fa: FragmentActivity) : FragmentStateAdapter(fa) {
val mFragmentList: ArrayList<Fragment> = ArrayList<Fragment>()


val mFragmentSwitcher1 = ArrayList<Boolean>()
val mFragmentSwitcher2 = ArrayList<Boolean>()
val mFragmentSwitcher3 = ArrayList<Boolean>()
val mFragmentSwitcher4 = ArrayList<Boolean>()



override fun getItemCount(): Int {
    //TODO("Not yet implemented")
    return mFragmentList.size
}

override fun createFragment(position: Int): Fragment {
    //TODO("Not yet implemented")
    return FragmentChild.newInstance(position)
}


override fun onBindViewHolder(holder: FragmentViewHolder, position: Int, payloads: MutableList<Any>) {
    super.onBindViewHolder(holder, position, payloads)

}


override fun getItemId(position: Int): Long {
    return super.getItemId(position)
}


override fun containsItem(itemId: Long): Boolean {
    return super.containsItem(itemId)
}





fun addFrag(
    fragment: Fragment,
    switcher1: Boolean, switcher2: Boolean, switcher3: Boolean, switcher4: Boolean) {

    mFragmentList.add(fragment)

    mFragmentSwitcher1.add(switcher1)
    mFragmentSwitcher2.add(switcher2)
    mFragmentSwitcher3.add(switcher3)
    mFragmentSwitcher4.add(switcher4)



    notifyDataSetChanged()


    Log.d(TAG, mFragmentSwitcher1.toString())
    Log.d(TAG, mFragmentSwitcher2.toString())
    Log.d(TAG, mFragmentSwitcher3.toString())
    Log.d(TAG, mFragmentSwitcher4.toString())
}


fun changeState(x :Boolean) {

    for (i in 0 until mFragmentSwitcher1.size) {
        mFragmentSwitcher1[i] = x
        mFragmentSwitcher2[i] = x
        mFragmentSwitcher3[i] = x
        mFragmentSwitcher4[i] = x
        Log.d(TAG, mFragmentSwitcher1.toString())
        Log.d(TAG, mFragmentSwitcher2.toString())
        Log.d(TAG, mFragmentSwitcher3.toString())
        Log.d(TAG, mFragmentSwitcher4.toString())
    }
    
    notifyDataSetChanged()
   
  }


}

Adapter for ViewPager

class ViewPagerAdapter(manager: FragmentManager?, var context: Context, viewPager: ViewPager, 
tabLayout: TabLayout) : FragmentPagerAdapter(manager!!) {
val mFragmentList: ArrayList<Fragment> = ArrayList<Fragment>()


val mFragmentSwitcher1 = ArrayList<Boolean>()
val mFragmentSwitcher2 = ArrayList<Boolean>()
val mFragmentSwitcher3 = ArrayList<Boolean>()
val mFragmentSwitcher4 = ArrayList<Boolean>()

var viewPager: ViewPager
var tabLayout: TabLayout


override fun getItem(position: Int): Fragment {
    return mFragmentList[position]
}


override fun getCount(): Int {
    return mFragmentList.size
}

fun addFrag(fragment: Fragment,
            switcher1: Boolean, switcher2: Boolean, switcher3: Boolean, switcher4: Boolean) {

    mFragmentList.add(fragment)

   
    mFragmentSwitcher1.add(switcher1)
    mFragmentSwitcher2.add(switcher2)
    mFragmentSwitcher3.add(switcher3)
    mFragmentSwitcher4.add(switcher4)
   

    Log.d(TAG, mFragmentSwitcher1.toString())
    Log.d(TAG, mFragmentSwitcher2.toString())
    Log.d(TAG, mFragmentSwitcher3.toString())
    Log.d(TAG, mFragmentSwitcher4.toString())
}


fun changeState(x :Boolean) {

    for (i in 0 until mFragmentSwitcher1.size) {
        mFragmentSwitcher1[i] = x
        mFragmentSwitcher2[i] = x
        mFragmentSwitcher3[i] = x
        mFragmentSwitcher4[i] = x
        Log.d(TAG, mFragmentSwitcher1.toString())
        Log.d(TAG, mFragmentSwitcher2.toString())
        Log.d(TAG, mFragmentSwitcher3.toString())
        Log.d(TAG, mFragmentSwitcher4.toString())
    }

    notifyDataSetChanged()

}



override fun getItemPosition(`object`: Any): Int {
    return POSITION_NONE
}


init {
    this.viewPager = viewPager
    this.tabLayout = tabLayout
}
}
0

There are 0 best solutions below