Skip to content

Instantly share code, notes, and snippets.

@Draketheb4dass
Created July 28, 2021 14:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Draketheb4dass/86a7d4155c81a703ac2397d51d44ec6f to your computer and use it in GitHub Desktop.
Save Draketheb4dass/86a7d4155c81a703ac2397d51d44ec6f to your computer and use it in GitHub Desktop.
package com.jephtecolin.kwii.ui.consumable_detail
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.databinding.Observable
import androidx.databinding.ObservableDouble
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import com.airbnb.epoxy.EpoxyRecyclerView
import com.jephtecolin.kwii.*
import com.jephtecolin.model.Consumable
import com.jephtecolin.model.Topping
import com.jephtecolin.kwii.databinding.ConsumableDetailFragmentBinding
import com.jephtecolin.kwii.ui.custom.OnCheckedChangeListener
import com.jephtecolin.kwii.ui.custom.counterView
import com.jephtecolin.kwii.util.TAG
import com.jephtecolin.kwii.util.setOnCheckedChangeListener
import timber.log.Timber
class ConsumableDetailFragment : Fragment() {
private lateinit var binding: ConsumableDetailFragmentBinding
private val viewModel: ConsumableDetailViewModel by viewModels()
val topping = Topping("1", "Hot Cheese", 30.00)
val toppings: List<Topping> = listOf(topping, topping, topping, topping, topping)
val consumable = Consumable(
"1",
"Griot de boeuf",
"Food",
250.00,
"https://www.innovatorsmag.com/wp-content/uploads/2017/03/IF-Burger-1024x772.jpg",
"Griot de boeuf en sauce, servis avec des bananes pese, des frites et du salade",
"Boeuf, Banane, Choux, Radis",
)
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View {
binding = ConsumableDetailFragmentBinding.inflate(inflater, container, false)
binding.lifecycleOwner = this
binding.viewModel = viewModel
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.consumable = consumable
val rvConsumableDetail: EpoxyRecyclerView = view.findViewById(R.id.rvConsumableDetail)
// viewModel.totalCost.observe(viewLifecycleOwner) {
// Timber.d("From observable: " + it)
// binding.tvAddToCart.setText(it.toString())
// }
viewModel.totalCost.addOnPropertyChangedCallback(
object : Observable.OnPropertyChangedCallback() {
override fun onPropertyChanged(sender: Observable?, propertyId: Int) {
Toast.makeText(context, (sender as ObservableDouble).get().toString(), Toast.LENGTH_LONG).show()
Timber.d(" totalPrice :" + (sender as ObservableDouble).get())
}
})
rvConsumableDetail.withModels {
itemConsumableDesc {
id("consumable description")
consumable(consumable)
}
itemCheckbox {
id("topping")
toppings(toppings.toTypedArray())
listener(object : OnCheckedChangeListener {
override fun onCheckedChange(totalPrice: Double) {
// todo("Not yet implemented")
Timber.d("itemCheckBox totalPrice :" + totalPrice)
}
})
}
counterView {
id("counter")
}
}
binding.tvAddToCart.setOnClickListener {
Timber.tag(TAG).d("Add to Cart clicked")
findNavController().navigateUp()
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment