Mercurial > dwindows
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 } |