목차
[무작정 코틀린 01] RxJava와 섞어쓰기
[무작정 코틀린 01] RxJava와 섞어써보았다 더 나은 방법에 대한 의견이나 질문은 언제든지 환영합니다.
2017-05-30#프로그래밍
💡 이 글은 작성된지 1년 이상 지났습니다. 정보글의 경우 최신 내용이 아닐 수 있음에 유의해주세요.
package com.lynlab.restbus.view.fragment
import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import com.lynlab.restbus.R
import com.lynlab.restbus.api.RestApi
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
/**
* 노선 검색 프래그먼트
*/
class SearchRouteFragment : Fragment() {
private var restApi = RestApi()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_search_route, container, false)
// 검색 Observable 추가
val searchEditText = view.findViewById(R.id.edittext_search_route) as EditText
val observable: Observable<String> = Observable.create({ emitter ->
emitter.onNext(searchEditText.text.toString())
})
// 검색 Subscriber 설정
val searchButton = view.findViewById(R.id.button_search_route) as Button
searchButton.setOnClickListener({ observable.subscribe({ query -> requestRoutes(query) }) })
return view
}
/**
* 검색을 요청, 처리한다.
*/
fun requestRoutes(query: String) {
restApi.getRoutes(query)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{ routes -> Toast.makeText(context, "${routes.size} result(s)", Toast.LENGTH_SHORT).show() },
{ _ -> Toast.makeText(context, R.string.toast_error_network, Toast.LENGTH_SHORT).show() }
)
}
}
더 나은 방법에 대한 의견이나 질문은 언제든지 환영합니다.
관련된 글
Rails와 GitHub Actions에 커버리지 레포트를 달아보자
이 블로그의 CMS이기도 한 Shiori를 대폭 리팩토링하면서 테스트가 얼마나 잘 작성되어있는지 궁금해졌습니다.
Rails Global ID로 전역 객체 식별하기
Global ID는 Rails의 모든 객체를 식별할 수 있는 URI(Uniform Resource Identifier)입니다.
Ruby on WebAssembly: 살짝 맛보기
Ruby 3.2에 추가된 WebAssembly 지원을 간단하게 테스트해봅시다.
본 사이트의 저작물은 별도의 언급이 없는 한 크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
© 2011 - 2024 Hoerin Doh, All rights reserved.
작성한 댓글은 giscus를 통해 GitHub Discussion에 저장됩니다.