Guest User

Fragment

a guest
Mar 27th, 2024
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.68 KB | None | 0 0
  1. override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
  2. super.onViewCreated(view, savedInstanceState)
  3.  
  4. observeUI()
  5.  
  6.  
  7. initRecyclerViewAdapter()
  8. }
  9.  
  10.  
  11. private fun initRecyclerViewAdapter() {
  12. val spannedGridLayoutManager = SpannedGridLayoutManager(orientation = SpannedGridLayoutManager.Orientation.VERTICAL,
  13. spans = 6)
  14.  
  15.  
  16.  
  17. spannedGridLayoutManager.spanSizeLookup = SpannedGridLayoutManager.SpanSizeLookup{position ->
  18. when {
  19. position in listOf(0, 2, 3, 4) -> SpanSize(2, 2)
  20. position == 1 -> SpanSize(2, 4)
  21. position in listOf(5, 8) -> SpanSize(2, 3)
  22. position in listOf(6, 9) -> SpanSize(2, 2)
  23. position in listOf(7, 10) -> SpanSize(2, 1)
  24. position >= 11 && position <= 40-> {
  25. val adjustedPosition = position % 11 // Adjusted position starting from 11
  26. when (adjustedPosition) {
  27. in listOf(0, 2, 3, 4) -> SpanSize(2, 2)
  28. 1 -> SpanSize(2, 4)
  29. in listOf(5, 8) -> SpanSize(2, 3)
  30. in listOf(6, 9) -> SpanSize(2, 2)
  31. in listOf(7, 10) -> SpanSize(2, 1)
  32. else -> SpanSize(1, 1)
  33. }
  34. }
  35. else -> SpanSize(1, 1)
  36. }
  37.  
  38. }
  39.  
  40. spannedGridLayoutManager.itemOrderIsStable = true
  41. binding.rvMenu?.layoutManager = spannedGridLayoutManager
  42.  
  43.  
  44. menuAdapter.setOnMenuClickListener {
  45. Toast.makeText(requireContext(), "${it.titleEn}", Toast.LENGTH_SHORT).show()
  46. }
  47. binding.rvMenu?.adapter = menuAdapter
  48. }
  49.  
  50.  
  51.  
  52. private fun observeUI() {
  53. // Observe menu
  54. homeViewModel.loadDynamicMenu().observe(viewLifecycleOwner, Observer{
  55. it?.let { resources ->
  56. when(resources.status){
  57. Status.LOADING -> {
  58. Log.i(TAG, "Loading dynamic menu")}
  59. Status.SUCCESS -> {
  60. Log.i(TAG, "Load dynamic menu : ${mutableListOf(resources.body!!.data)}")
  61.  
  62. val menu = resources.body.data.submenu
  63. initializeView(menu)
  64.  
  65. val filterMenu = menu?.filterNot { it?.link == getString(R.string.hotel_guide) }
  66. menuAdapter.add(filterMenu)
  67. }
  68. Status.ERROR -> {
  69. Log.e(TAG, "Failure load dynamic menu ${resources.message}", )
  70. }
  71. }
  72. }
  73. })
  74. }
Advertisement
Add Comment
Please, Sign In to add comment