Skip to content

Instantly share code, notes, and snippets.

@lampard-android
Created November 15, 2021 17:20
Show Gist options
  • Save lampard-android/80cf55b58d8660b62cc847e42a91be02 to your computer and use it in GitHub Desktop.
Save lampard-android/80cf55b58d8660b62cc847e42a91be02 to your computer and use it in GitHub Desktop.
ListRestaurantsActivity.kt
package com.codegym.demo.list.view
import android.os.Bundle
import android.widget.Toast
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isVisible
import com.codegym.demo.data.ResponseData
import com.codegym.demo.databinding.ActivityListRestaurantsBinding
import com.codegym.demo.detail.RestaurantDetailActivity
import com.codegym.demo.list.viewmodel.ListRestaurantsViewModel
import com.codegym.demo.util.viewBinding
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class ListRestaurantsActivity : AppCompatActivity() {
private val binding by viewBinding(ActivityListRestaurantsBinding::inflate)
private val viewModel by viewModels<ListRestaurantsViewModel>()
private lateinit var listAdapter: RestaurantAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
initView()
dataObserver()
}
private fun initView() {
supportActionBar?.title = "List Restaurant"
listAdapter = RestaurantAdapter()
listAdapter.onItemClicked = {
RestaurantDetailActivity.goToDetail(this@ListRestaurantsActivity, it)
}
binding.recycleView.adapter = listAdapter
}
private fun dataObserver() {
viewModel.listRestaurantLiveData.observe(
this, {
when (it) {
is ResponseData.Loading -> {
binding.progressBar.isVisible = true
}
is ResponseData.Success -> {
binding.progressBar.isVisible = false
listAdapter.updateData(it.data.restaurants)
}
is ResponseData.Error -> {
binding.progressBar.isVisible = false
Toast.makeText(
this@ListRestaurantsActivity,
"Error $it",
Toast.LENGTH_SHORT
).show()
}
}
}
)
viewModel.getAllRestaurants()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment