Retrofit2 | #9

MainActivity.kt

import android.os.Bundle
import com.google.android.material.snackbar.Snackbar
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.WindowCompat
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.navigateUp
import androidx.navigation.ui.setupActionBarWithNavController
import android.view.Menu
import android.view.MenuItem
import com.neco_desarrollo.retrofitdataclasslesson.databinding.ActivityMainBinding
import com.neco_desarrollo.retrofitdataclasslesson.retrofit.MainApi
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory

class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
WindowCompat.setDecorFitsSystemWindows(window, false)
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)

val retrofit = Retrofit.Builder()
.baseUrl("https://api.weatherapi.com/v1/")
.addConverterFactory(GsonConverterFactory.create())
.build()

binding.request.setOnClickListener {
CoroutineScope(Dispatchers.Main).launch {
val api = retrofit.create(MainApi::class.java)
val model = api.getWeatherData(
"ВАШ КЛЮЧ",
"London",
"3",
"no",
"no"
)
binding.temp.text = model.current.temp_c.toString()
binding.date.text = model.location.name
}
}
}
}

MainApi.kt

import com.neco_desarrollo.retrofitdataclasslesson.data_model.WeatherDataModel
import retrofit2.http.GET
import retrofit2.http.Query

interface MainApi {
@GET("forecast.json")
suspend fun getWeatherData(
@Query("key") key: String,
@Query("q") q: String,
@Query("days") days: String,
@Query("aqi") aqi: String,
@Query("alerts") alerts: String,
) : WeatherDataModel
}

ForecastModel.kt

data class ForecastModel(
val forecastday: List<ForecastDayModel>
)

data class ForecastDayModel(
val date: String,
val day: DayModel,
val hour: List<HourModel>
)

data class DayModel(
val maxtemp_c: String,
val mintemp_c: String,
val condition: ConditionModel
)

data class HourModel(
val time: String,
val temp_c: Float,
val condition: ConditionModel
)

WeatherDataModel.kt

data class WeatherDataModel(
val location: LocalModel,
val current: CurrentModel,
val forecast: ForecastModel
)

data class LocalModel(
val name: String,
val localtime: String
)

data class CurrentModel(
val last_updated: String,
val temp_c: Float,
val condition: ConditionModel
)

data class ConditionModel(
val text: String,
val icon: String
)


activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".MainActivity">


<TextView
android:id="@+id/temp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="72dp"
android:text="TextView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<TextView
android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="TextView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/temp" />

<Button
android:id="@+id/request"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:text="Request"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

зависимости:

implementation "com.squareup.retrofit2:retrofit:2.9.0"
implementation "com.squareup.retrofit2:converter-gson:2.9.0"

Добавить комментарий

Ваш адрес email не будет опубликован.