comparison android/DWindows.kt @ 2692:231f9489a38a

Android: Keep a list of tab titles in the ViewPager2 adapter and set titles in the TabLayoutMediator, since they seem to get reset in the data change handler.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sun, 31 Oct 2021 23:36:33 +0000
parents e13607b87517
children cee79add3669
comparison
equal deleted inserted replaced
2691:e13607b87517 2692:231f9489a38a
89 val DWImageExts = arrayOf("", ".png", ".webp", ".jpg", ".jpeg", ".gif") 89 val DWImageExts = arrayOf("", ".png", ".webp", ".jpg", ".jpeg", ".gif")
90 90
91 class DWTabViewPagerAdapter : RecyclerView.Adapter<DWTabViewPagerAdapter.DWEventViewHolder>() { 91 class DWTabViewPagerAdapter : RecyclerView.Adapter<DWTabViewPagerAdapter.DWEventViewHolder>() {
92 val viewList = mutableListOf<LinearLayout>() 92 val viewList = mutableListOf<LinearLayout>()
93 val pageList = mutableListOf<Long>() 93 val pageList = mutableListOf<Long>()
94 val titleList = mutableListOf<String?>()
94 var currentPageID = 0L 95 var currentPageID = 0L
95 var recyclerView: RecyclerView? = null 96 var recyclerView: RecyclerView? = null
96 97
97 override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = 98 override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) =
98 DWEventViewHolder(viewList.get(viewType)) 99 DWEventViewHolder(viewList.get(viewType))
2217 notebook!!.id = cid 2218 notebook!!.id = cid
2218 tabs.id = View.generateViewId() 2219 tabs.id = View.generateViewId()
2219 pager.id = View.generateViewId() 2220 pager.id = View.generateViewId()
2220 pager.adapter = DWTabViewPagerAdapter() 2221 pager.adapter = DWTabViewPagerAdapter()
2221 TabLayoutMediator(tabs, pager) { tab, position -> 2222 TabLayoutMediator(tabs, pager) { tab, position ->
2222 // This code never gets called? 2223 val adapter = pager.adapter as DWTabViewPagerAdapter
2224 tab.text = adapter.titleList[position]
2223 }.attach() 2225 }.attach()
2224 2226
2225 var params: RelativeLayout.LayoutParams = RelativeLayout.LayoutParams(w, h) 2227 var params: RelativeLayout.LayoutParams = RelativeLayout.LayoutParams(w, h)
2226 if (top != 0) { 2228 if (top != 0) {
2227 params.addRule(RelativeLayout.ALIGN_PARENT_TOP) 2229 params.addRule(RelativeLayout.ALIGN_PARENT_TOP)
2288 LinearLayout.LayoutParams.MATCH_PARENT 2290 LinearLayout.LayoutParams.MATCH_PARENT
2289 ) 2291 )
2290 if (front != 0) { 2292 if (front != 0) {
2291 adapter.viewList.add(0, placeholder) 2293 adapter.viewList.add(0, placeholder)
2292 adapter.pageList.add(0, pageID) 2294 adapter.pageList.add(0, pageID)
2295 adapter.titleList.add(0, null)
2293 tabs.addTab(tab, 0) 2296 tabs.addTab(tab, 0)
2294 } else { 2297 } else {
2295 adapter.viewList.add(placeholder) 2298 adapter.viewList.add(placeholder)
2296 adapter.pageList.add(pageID) 2299 adapter.pageList.add(pageID)
2300 adapter.titleList.add(null)
2297 tabs.addTab(tab) 2301 tabs.addTab(tab)
2298 } 2302 }
2299 adapter.notifyDataSetChanged() 2303 adapter.notifyDataSetChanged()
2300 } 2304 }
2301 } 2305 }
2336 val tab = tabs.getTabAt(index) 2340 val tab = tabs.getTabAt(index)
2337 2341
2338 if (tab != null) { 2342 if (tab != null) {
2339 adapter.viewList.removeAt(index) 2343 adapter.viewList.removeAt(index)
2340 adapter.pageList.removeAt(index) 2344 adapter.pageList.removeAt(index)
2345 adapter.titleList.removeAt(index)
2341 tabs.removeTab(tab) 2346 tabs.removeTab(tab)
2342 adapter.notifyDataSetChanged() 2347 adapter.notifyDataSetChanged()
2343 } 2348 }
2344 } 2349 }
2345 } 2350 }
2364 val index = adapter.pageList.indexOf(pageID) 2369 val index = adapter.pageList.indexOf(pageID)
2365 val tab = tabs.getTabAt(index) 2370 val tab = tabs.getTabAt(index)
2366 2371
2367 if (tab != null) { 2372 if (tab != null) {
2368 tab.text = text 2373 tab.text = text
2374 adapter.titleList[index] = text
2369 } 2375 }
2370 2376
2371 notebookCapsOff(tabs) 2377 notebookCapsOff(tabs)
2372 } 2378 }
2373 } 2379 }