Kotlin Android에서 Retrofit2, RxJava2를 사용하여 JSON 파일을 읽는 방법

ProcgerXacker

저는 최근에 반응 형 프로그래밍을 배우기 시작했습니다. Retrofit2를 사용하여 API JSON 파일을 읽을 수 있지만 RxJava2를 사용하여 반응 형 프로그래밍을 사용하여 수행하는 방법을 모릅니다. 링크 나 기성 코드가 있다면 감사 할 것입니다. 나 자신이이 작업을 구현하려고했지만 작동하지 않습니다. https://www.learn2crack.com/2017/11/retrofit-and-rxjava-in-kotlin.html 링크에 따라 모든 작업을 수행 했지만 구독에서 응답 기능을 호출하면 아무것도 작동하지 않습니다. 예를 들어, 표시하려고하는데 아무것도 표시되지 않습니다.

MainActivity 클래스


package com.example.json_rxjava

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import com.example.json_rxjava.MODEL.JsonModel
import com.example.json_rxjava.NETWORK.RequestInterface
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.schedulers.Schedulers
import retrofit2.Retrofit
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
import retrofit2.converter.gson.GsonConverterFactory

class MainActivity : AppCompatActivity() {
    private val BASE_URL = "https://learn2crack-json.herokuapp.com/"
    private var mCompositeDisposable: CompositeDisposable? = null
    private var mJsonModelDataList: ArrayList<JsonModel>? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        loadJSON()
    }

    private fun loadJSON() {
        val requestInterface = Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .addConverterFactory(GsonConverterFactory.create())
            .build().create(RequestInterface::class.java)

        mCompositeDisposable?.add( requestInterface.getData()
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(Schedulers.io())
            .subscribe(this::handleResponse)
        )
    }

    private fun handleError(error: Throwable) {
        Log.e("ERROR: ", error.localizedMessage)
    }

    private fun handleResponse(jsonModel: List<JsonModel>) {
        Log.e("LOG TEST", "THIS IS RESPONSE")
        mJsonModelDataList = ArrayList(jsonModel)
        for(i in 0..mJsonModelDataList!!.size-1) {
            Log.e("LOG: ", mJsonModelDataList?.get(i)?.name.toString())
        }
    }

    override fun onDestroy() {
        super.onDestroy()
        mCompositeDisposable?.clear()
    }
}

RequestInterface


package com.example.json_rxjava.NETWORK

import com.example.json_rxjava.MODEL.JsonModel
import io.reactivex.Observable
import retrofit2.http.GET

interface RequestInterface {
    @GET("api/android")
    fun getData(): Observable<List<JsonModel>>
}

JsonModel


package com.example.json_rxjava.MODEL

data class JsonModel(
    val version: String,
    val name: String,
    val apiLevel: String
)

build.gradle에 다음 종속성을 추가했습니다.


//RxJava and Retrofit
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
implementation 'io.reactivex.rxjava2:rxjava:2.1.6'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'

AndroidManifest에 다음이 추가되었습니다.

<uses-permission android:name="android.permission.INTERNET"/>

프로그램은 다음을 출력합니다.


D/NetworkSecurityConfig: Using Network Security Config from resource network_security_config debugBuild: true
D/: HostConnection::get() New Host Connection established 0xa3fc0140, tid 8411
D/: HostConnection::get() New Host Connection established 0xa3fc0500, tid 8460
I/OpenGLRenderer: Initialized EGL, version 1.4
D/OpenGLRenderer: Swap behavior 1
W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
D/OpenGLRenderer: Swap behavior 0
D/EGL_emulation: eglCreateContext: 0xaed85360: maj 2 min 0 rcv 2
D/EGL_emulation: eglMakeCurrent: 0xaed85360: ver 2 0 (tinfo 0xaed831f0)
D/EGL_emulation: eglMakeCurrent: 0xaed85360: ver 2 0 (tinfo 0xaed831f0)
D/EGL_emulation: eglMakeCurrent: 0xaed85360: ver 2 0 (tinfo 0xaed831f0)

문제가 무엇인지 알고 있거나 Kotlin에서 Retrofit2 및 RxJava2를 사용하여 API JSON을 읽는 방법에 대한 링크 또는 기성 코드가 있으면 알려주세요.

Subhrajyoti sen

아무 일도 일어나지 않는 이유는 초기화하는 것을 잊었 기 때문 mCompositeDisposable입니다. 따라서 실행할 때마다 mCompositeDisposable?.mCompositeDisposable이이므로 해당 코드를 건너 뜁니다 null.

이를 수정하려면 선언을

private val mCompositeDisposable: CompositeDisposable = CompositeDisposable()

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Android Studio에서 retrofit2를 사용하여 json 로그를 얻는 방법은 무엇입니까?

분류에서Dev

Retrofit2를 사용하여 우편 번호 JSON 본문으로 주소 목록을 가져 오는 방법

분류에서Dev

Rascal을 사용하여 json 파일에서 위치를 읽고 쓰는 방법

분류에서Dev

onComplete (Rxjava2)에서 Observable을 사용하는 방법

분류에서Dev

Kotlin에서 500 오류를 처리하고 Retrofit2를 사용하여 세부 메시지를 표시하는 방법은 무엇입니까?

분류에서Dev

Android에서 Retrofit2를 사용하여 RecyclerView에 데이터를로드하는 방법

분류에서Dev

[RxJava] Android RxJava × retrofit2에서`retryWhen ()`으로 네트워크 오류를 처리하는 방법

분류에서Dev

PHP를 사용하여 JSON 파일을 읽는 방법

분류에서Dev

Retrofit2에서 매개 변수 목록을 설정하는 방법

분류에서Dev

React를 사용하여 다른 사이트에서 호스팅되는 json 파일을 읽는 방법

분류에서Dev

2 개 이상의 코어를 사용하여 파이썬에서 파일을 읽는 방법

분류에서Dev

web2py에서 JSON 정적 파일을 읽는 방법

분류에서Dev

jinja2 및 python에서 json 파일을 사용하여 구성을 생성하는 방법

분류에서Dev

rxjava2에서 Observable을 연결하는 방법

분류에서Dev

Kotlin IllegalStateException 메시지 == null에서 RxJava2를 사용한 Retrofit-Vertx

분류에서Dev

Groovy를 사용하여 파일에서 JSON 형식을 지정하는 방법

분류에서Dev

Android에 Kotlin을 사용하여 runOnUiThread에서 추가를 재생하는 방법

분류에서Dev

awk 및 sed를 사용하여 JSON 파일의 목록을 읽는 방법

분류에서Dev

Android 앱에서 GSON을 사용하여 Youtube API에서 JSON-c 데이터를 읽는 방법

분류에서Dev

Symfony 2 : PHPExcel을 사용하여 Excel 파일 내용을 읽는 방법

분류에서Dev

vb.net에서 HttpClient를 사용하여 JSON 응답을 읽는 방법

분류에서Dev

nodejs를 사용하여 요청에서 동적 json을 읽는 방법

분류에서Dev

C ++를 사용하여 txt 파일에서 n 값을 읽는 방법

분류에서Dev

wholeTextFiles를 사용하여 Spark에서 gz 파일을 읽는 방법

분류에서Dev

R에서 루프를 사용하여 많은 파일을 읽는 방법

분류에서Dev

Pandas를 사용하여 Python에서 텍스트 파일을 읽는 방법

분류에서Dev

wpf C #에서 xmldataprovider를 사용하여 xml 파일을 읽는 방법

분류에서Dev

Retrofit2 + 코 틀린 방법 데이터 클래스로 GET 응답하는 동안 원시 JSON을 볼 수

분류에서Dev

C #에서 Json.Net을 사용하여 파일에서 Json 컬렉션을 읽는 방법

Related 관련 기사

  1. 1

    Android Studio에서 retrofit2를 사용하여 json 로그를 얻는 방법은 무엇입니까?

  2. 2

    Retrofit2를 사용하여 우편 번호 JSON 본문으로 주소 목록을 가져 오는 방법

  3. 3

    Rascal을 사용하여 json 파일에서 위치를 읽고 쓰는 방법

  4. 4

    onComplete (Rxjava2)에서 Observable을 사용하는 방법

  5. 5

    Kotlin에서 500 오류를 처리하고 Retrofit2를 사용하여 세부 메시지를 표시하는 방법은 무엇입니까?

  6. 6

    Android에서 Retrofit2를 사용하여 RecyclerView에 데이터를로드하는 방법

  7. 7

    [RxJava] Android RxJava × retrofit2에서`retryWhen ()`으로 네트워크 오류를 처리하는 방법

  8. 8

    PHP를 사용하여 JSON 파일을 읽는 방법

  9. 9

    Retrofit2에서 매개 변수 목록을 설정하는 방법

  10. 10

    React를 사용하여 다른 사이트에서 호스팅되는 json 파일을 읽는 방법

  11. 11

    2 개 이상의 코어를 사용하여 파이썬에서 파일을 읽는 방법

  12. 12

    web2py에서 JSON 정적 파일을 읽는 방법

  13. 13

    jinja2 및 python에서 json 파일을 사용하여 구성을 생성하는 방법

  14. 14

    rxjava2에서 Observable을 연결하는 방법

  15. 15

    Kotlin IllegalStateException 메시지 == null에서 RxJava2를 사용한 Retrofit-Vertx

  16. 16

    Groovy를 사용하여 파일에서 JSON 형식을 지정하는 방법

  17. 17

    Android에 Kotlin을 사용하여 runOnUiThread에서 추가를 재생하는 방법

  18. 18

    awk 및 sed를 사용하여 JSON 파일의 목록을 읽는 방법

  19. 19

    Android 앱에서 GSON을 사용하여 Youtube API에서 JSON-c 데이터를 읽는 방법

  20. 20

    Symfony 2 : PHPExcel을 사용하여 Excel 파일 내용을 읽는 방법

  21. 21

    vb.net에서 HttpClient를 사용하여 JSON 응답을 읽는 방법

  22. 22

    nodejs를 사용하여 요청에서 동적 json을 읽는 방법

  23. 23

    C ++를 사용하여 txt 파일에서 n 값을 읽는 방법

  24. 24

    wholeTextFiles를 사용하여 Spark에서 gz 파일을 읽는 방법

  25. 25

    R에서 루프를 사용하여 많은 파일을 읽는 방법

  26. 26

    Pandas를 사용하여 Python에서 텍스트 파일을 읽는 방법

  27. 27

    wpf C #에서 xmldataprovider를 사용하여 xml 파일을 읽는 방법

  28. 28

    Retrofit2 + 코 틀린 방법 데이터 클래스로 GET 응답하는 동안 원시 JSON을 볼 수

  29. 29

    C #에서 Json.Net을 사용하여 파일에서 Json 컬렉션을 읽는 방법

뜨겁다태그

보관