У меня есть приложение, оно разработано в Котлине. Одно из моих занятий содержит макет вкладки с viewpager-ом (например, отправка рекламы на получение). На вкладке «Отправить» содержатся такие данные, как A, B, C.На вкладке «Получение» 1,2,3.Все данные из базы данных.я хочу обновить свой viewpaer / tabview новыми данными (такими как D, E, F .. 4,5,6 .....).я пробую несколько методов, но это не работает.
Примечание: я не хочу обновлять табуляцию старыми данными, потому что это работает.Мне нужно только, как связать новые данные. Когда я закрываю приложение и открываю снова, оно будет обновляться новыми данными, но оно не работает без закрытия приложения.
private fun setupViewPager(viewPager: ViewPager, it: List<TransactionEntity>?, incoming: TransactionAdapterDirection) {
if (incoming.equals(OUTGOING)) {
adapter.addFragment(SendingFragment(it!!, appDatabase, OUTGOING, networkDefinitionProvider), "SEND")
adapter.notifyDataSetChanged() //KK
} else if (incoming.equals(INCOMING)) {
adapter.addFragment(ReceiveFragment(it!!, appDatabase, INCOMING, networkDefinitionProvider), "RECEIVE")
adapter.notifyDataSetChanged() //KK
}
viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageScrollStateChanged(state: Int) {
}
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
}
override fun onPageSelected(position: Int) {
}
})
viewPager.adapter = adapter
}
inner class ViewPagerAdapter(manager: FragmentManager) : FragmentStatePagerAdapter(manager) {
private val mFragmentList = ArrayList<Fragment>()
private val mFragmentTitleList = ArrayList<String>()
override fun getItem(position: Int): Fragment {
return mFragmentList[position]
}
override fun getCount(): Int {
return mFragmentList.size
}
fun addFragment(fragment: Fragment, title: String) {
mFragmentList.add(fragment)
mFragmentTitleList.add(title)
}
override fun getPageTitle(position: Int): CharSequence {
return mFragmentTitleList[position]
}
override fun getItemPosition(`object`: Any): Int {
return PagerAdapter.POSITION_NONE
}
}
ОБНОВЛЕНИЕ:
override fun getItem(position: Int): Fragment {
if(this.count < 3) {
mFragmentList.add(ReceiveFragment(mfragmentIT, mfragmentAB, mfragmentINC, mfragmentnetwork))
mFragmentList.add(SendingFragment(mfragmentIT, mfragmentAB, mfragmentINC, mfragmentnetwork))
for (i in 1..3) {
println(i)
}
}
return mFragmentList.get(i)
}
ОБНОВЛЕНИЕ 2:
override fun getItem(position: Int): Fragment {
if (position == 0) {
val tab1 = this.addFragment(com.crypto.wallet.activities.ReceiveFragment(mfragmentIT,mfragmentAB,mfragmentINC,mfragmentnetwork), "RECEIVE")
return tab1 as Fragment
} else {
val tab2 = this.addFragment(com.crypto.wallet.activities.SendingFragment(mfragmentIT,mfragmentAB,mfragmentINC,mfragmentnetwork), "SEND")
return tab2 as Fragment
}
}