Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.apicoroutinestreningv1
- import androidx.appcompat.app.AppCompatActivity
- import android.os.Bundle
- import android.widget.Toast
- import androidx.lifecycle.observe
- import androidx.recyclerview.widget.GridLayoutManager
- import kotlinx.android.synthetic.main.activity_main.*
- import okhttp3.OkHttpClient
- import okhttp3.logging.HttpLoggingInterceptor
- import retrofit2.*
- import retrofit2.converter.gson.GsonConverterFactory
- class MainActivity : AppCompatActivity() {
- private val api by lazy { createApi() }
- private val repository by lazy { Repository(api) }
- private val viewModel by lazy { MainViewModel(repository) }
- private val adapter by lazy { BeerAdapter() }
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
- initRecycler()
- observeBeerChanges()
- observeErrorChanges()
- viewModel.onViewCreated()
- }
- private fun observeErrorChanges(){
- viewModel.error.observe(this){throwable ->
- throwable.message?.let { showErrorMessage(it) }
- }
- }
- private fun observeBeerChanges() {
- viewModel.beers.observe(this) {
- showBeers(it)
- }
- }
- private fun initRecycler(){
- recyclerView.layoutManager = GridLayoutManager(this, 1)
- recyclerView.adapter = adapter
- }
- private fun showErrorMessage(message: String){
- Toast.makeText(this, "An error occured, code: $message", Toast.LENGTH_LONG).show()
- }
- private fun showBeers(beers: List<Beer>){
- adapter.setBeers(beers)
- }
- private fun createApi(): BrewDogApi { //prywatna metoda zeby stworzyc interfejs. robie to po zrobienie beers, BDapi, BeerResponse
- val baseUrl = "https://api.punkapi.com/v2/"
- val interceptor = HttpLoggingInterceptor()
- .apply { level = HttpLoggingInterceptor.Level.BODY }
- val okHttpClient = OkHttpClient.Builder()
- .addInterceptor(interceptor)
- .build()
- //teraz robimy obiekt retrofita
- val retrofit = Retrofit.Builder()
- .baseUrl(baseUrl)
- .addConverterFactory(GsonConverterFactory.create())
- .build()
- return retrofit.create(BrewDogApi::class.java)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement