Advertisement
Guest User

Untitled

a guest
Apr 6th, 2020
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 2.32 KB | None | 0 0
  1. package com.example.apicoroutinestreningv1
  2.  
  3. import androidx.appcompat.app.AppCompatActivity
  4. import android.os.Bundle
  5. import android.widget.Toast
  6. import androidx.lifecycle.observe
  7. import androidx.recyclerview.widget.GridLayoutManager
  8. import kotlinx.android.synthetic.main.activity_main.*
  9. import okhttp3.OkHttpClient
  10. import okhttp3.logging.HttpLoggingInterceptor
  11. import retrofit2.*
  12. import retrofit2.converter.gson.GsonConverterFactory
  13.  
  14.  
  15. class MainActivity : AppCompatActivity() {
  16.  
  17.     private val api by lazy { createApi() }
  18.     private val repository by lazy { Repository(api) }
  19.     private val viewModel by lazy { MainViewModel(repository) }
  20.     private val adapter by lazy { BeerAdapter() }
  21.  
  22.     override fun onCreate(savedInstanceState: Bundle?) {
  23.         super.onCreate(savedInstanceState)
  24.         setContentView(R.layout.activity_main)
  25.         initRecycler()
  26.         observeBeerChanges()
  27.         observeErrorChanges()
  28.         viewModel.onViewCreated()
  29.     }
  30.  
  31.     private fun observeErrorChanges(){
  32.         viewModel.error.observe(this){throwable ->
  33.             throwable.message?.let { showErrorMessage(it) }
  34.         }
  35.     }
  36.  
  37.     private fun observeBeerChanges() {
  38.         viewModel.beers.observe(this) {
  39.             showBeers(it)
  40.         }
  41.     }
  42.  
  43.     private fun initRecycler(){
  44.         recyclerView.layoutManager = GridLayoutManager(this, 1)
  45.         recyclerView.adapter = adapter
  46.     }
  47.  
  48.     private fun showErrorMessage(message: String){
  49.         Toast.makeText(this, "An error occured, code: $message", Toast.LENGTH_LONG).show()
  50.     }
  51.  
  52.     private fun showBeers(beers: List<Beer>){
  53.         adapter.setBeers(beers)
  54.     }
  55.  
  56.     private fun createApi(): BrewDogApi  { //prywatna metoda zeby stworzyc interfejs. robie to po zrobienie beers, BDapi, BeerResponse
  57.         val baseUrl = "https://api.punkapi.com/v2/"
  58.  
  59.         val interceptor = HttpLoggingInterceptor()
  60.             .apply { level = HttpLoggingInterceptor.Level.BODY }
  61.         val okHttpClient = OkHttpClient.Builder()
  62.             .addInterceptor(interceptor)
  63.             .build()
  64.  
  65.         //teraz robimy obiekt retrofita
  66.         val retrofit = Retrofit.Builder()
  67.             .baseUrl(baseUrl)
  68.             .addConverterFactory(GsonConverterFactory.create())
  69.             .build()
  70.  
  71.        return retrofit.create(BrewDogApi::class.java)
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement