Прописываем зависимости в build.gradle, в секцию dependencies
// retrofit
implementation 'com.squareup.retrofit2:retrofit:2.6.1'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.6.1'
implementation 'com.squareup.retrofit2:converter-gson:2.6.1'
// rxandroid
implementation "io.reactivex.rxjava2:rxandroid:2.0.1"
Данные для примера приходят из API в формате
{
"content": [
{
"id": 3,
"application_id": 1,
"title": "Aricle title",
"description": "Article description",
"content": "Article content"
}
]
}
Эти данные надо спроецировать в модель:
object Articles {
data class Result(val content: ArrayList<Article>)
data class Article(
val id: Int,
val application_id: Int,
val title: String,
val description: String,
val content: String
)
}
Теперь создаем сервис получения данных:
import retrofit2.http.GET
import retrofit2.converter.gson.GsonConverterFactory
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
import retrofit2.Retrofit
import io.reactivex.Observable
import retrofit2.http.Headers
public interface ArticlesService {
@GET("api/content")
fun getList() : Observable<Articles.Result>
companion object {
fun create(): ArticlesService {
val retrofit = Retrofit.Builder()
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl("http://api.example.com/")
.build()
return retrofit.create(ArticlesService::class.java)
}
}
}
Теперь можно получать данные, например:
ArticlesService
.create()
.getList()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { result -> setupRecyclerView(result.content) }
Создаем сервис, создаем подписчик на события сервиса, подписываемся на события. В качестве примера, полученные данные передаются в функцию setupRecyclerView для дальнейшей обработки.