package org.ntlab.leftoverrecipe.viewmodel import android.app.Activity import android.databinding.BaseObservable import android.databinding.BindingAdapter import android.databinding.ObservableField import android.databinding.ObservableInt import android.view.View import android.widget.ImageView import com.bumptech.glide.Glide import org.ntlab.leftoverrecipe.api.recipe.DetailApiClient import org.ntlab.leftoverrecipe.api.recipe.DetailApiResponse import org.ntlab.leftoverrecipe.api.recipe.RecipeApiResponse import org.ntlab.leftoverrecipe.fragment.RegistDialogFragment import org.ntlab.leftoverrecipe.model.RxBus import org.ntlab.leftoverrecipe.model.registerInBus /** * Created by matsumoto_k on 2017/05/20 */ class DetailRecipeViewModel(var context: Activity, var recipeData: RecipeApiResponse.RecipeData) : BaseObservable() { val recipeTitle = ObservableField<String>() val detailTextView = ObservableField<String>() val imageUrl = ObservableField<String>() val stepText = ObservableField<String>() val anyone = ObservableField<String>() val material = ObservableField<String>() var descriptionText: ObservableField<String> = ObservableField() val loadVisible = ObservableInt(View.VISIBLE) val fabVisible = ObservableInt(View.GONE) var imageLoad = false var recipeLoad = false object CustomBindingAdapter { @JvmStatic @BindingAdapter("imageUrl") fun imageUrl(imageView: ImageView, url: String) { Glide.with(imageView.context).load(url).into(imageView) } } init { recipeTitle.set(recipeData.recipeTitle) imageUrl.set(recipeData.foodImageUrl) load(recipeData.recipeUrl!!) RxBus.observe<DetailApiResponse>().subscribe { var stepText = "" var material = "" var count = 1 for (data in it.howto) { stepText += "(${count})\n${data.step}\n\n" count++ } for (data in it.material) { material += "${data.amount}\n${data.material}\n\n" } this.stepText.set(stepText) this.anyone.set(it.anyone) this.material.set(material) this.descriptionText.set(recipeData.recipeDescription) fabVisible.set(View.VISIBLE) loadVisible.set(View.GONE) }.registerInBus(this) } fun load(recipeUrl: String) { val recipeClient = DetailApiClient recipeClient.getRecipeData(recipeUrl) } fun onClickFab(view: View) { val dialog = RegistDialogFragment(recipeData) dialog.show(context.fragmentManager, "hoge") } }