Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- super.onViewCreated(view, savedInstanceState)
- observeUI()
- initRecyclerViewAdapter()
- }
- private fun initRecyclerViewAdapter() {
- val spannedGridLayoutManager = SpannedGridLayoutManager(orientation = SpannedGridLayoutManager.Orientation.VERTICAL,
- spans = 6)
- spannedGridLayoutManager.spanSizeLookup = SpannedGridLayoutManager.SpanSizeLookup{position ->
- when {
- position in listOf(0, 2, 3, 4) -> SpanSize(2, 2)
- position == 1 -> SpanSize(2, 4)
- position in listOf(5, 8) -> SpanSize(2, 3)
- position in listOf(6, 9) -> SpanSize(2, 2)
- position in listOf(7, 10) -> SpanSize(2, 1)
- position >= 11 && position <= 40-> {
- val adjustedPosition = position % 11 // Adjusted position starting from 11
- when (adjustedPosition) {
- in listOf(0, 2, 3, 4) -> SpanSize(2, 2)
- 1 -> SpanSize(2, 4)
- in listOf(5, 8) -> SpanSize(2, 3)
- in listOf(6, 9) -> SpanSize(2, 2)
- in listOf(7, 10) -> SpanSize(2, 1)
- else -> SpanSize(1, 1)
- }
- }
- else -> SpanSize(1, 1)
- }
- }
- spannedGridLayoutManager.itemOrderIsStable = true
- binding.rvMenu?.layoutManager = spannedGridLayoutManager
- menuAdapter.setOnMenuClickListener {
- Toast.makeText(requireContext(), "${it.titleEn}", Toast.LENGTH_SHORT).show()
- }
- binding.rvMenu?.adapter = menuAdapter
- }
- private fun observeUI() {
- // Observe menu
- homeViewModel.loadDynamicMenu().observe(viewLifecycleOwner, Observer{
- it?.let { resources ->
- when(resources.status){
- Status.LOADING -> {
- Log.i(TAG, "Loading dynamic menu")}
- Status.SUCCESS -> {
- Log.i(TAG, "Load dynamic menu : ${mutableListOf(resources.body!!.data)}")
- val menu = resources.body.data.submenu
- initializeView(menu)
- val filterMenu = menu?.filterNot { it?.link == getString(R.string.hotel_guide) }
- menuAdapter.add(filterMenu)
- }
- Status.ERROR -> {
- Log.e(TAG, "Failure load dynamic menu ${resources.message}", )
- }
- }
- }
- })
- }
Advertisement
Add Comment
Please, Sign In to add comment