기술적용
ViewModel 적용
131 developer
2022. 3. 15. 11:02
ViewModel 예제
class MainViewModel : ViewModel() {
val servLiveData = MutableLiveData<List<ServList>>()
val bottomNavLiveData = MutableLiveData<Boolean>()
private val service : RetrofitService
init {
var instance = Retrofit.Builder()
.baseUrl("http://apis.data.go.kr/B554287/abcde/")
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(TikXmlConverterFactory.create(TikXml.Builder().exceptionOnUnreadXml(false).build()))
.build()
service = instance.create(RetrofitService::class.java)
}
fun searchFacl(searchText : String) {
val facinfoCall : Call<FacInfoList> = service.getList(15, searchText)
facinfoCall.enqueue(object : Callback<FacInfoList> {
override fun onResponse(call: Call<FacInfoList>, response: Response<FacInfoList>) {
if(response.isSuccessful()) {
val items = response.body()?.servList!!
Log.d("tttest" , "dd = 성공!!")
servLiveData.postValue(items)
// adapter.updateItems(items)
} else { // code == 400
// 실패 처리
Log.d("tttest" , "dd = 실패")
}
}
override fun onFailure(call: Call<FacInfoList>, t: Throwable) {
Log.d("tttest" , "onFailure = " + t)
t.printStackTrace()
}
})
}
}
AndroidViewModel 예제

fragment ktx
implementation("androidx.fragment:fragment-ktx:1.4.0")
activity, fragment에서 적용
- activity
val mainViewModel : MainViewModel by viewModels()
- fragment
val mainViewModel by activityViewModels<MainViewModel>()