Skip to content

Instantly share code, notes, and snippets.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageview_avatar"
android:layout_width="150dp"
android:layout_height="150dp"
<ViewStub android:id="@+id/stub"
android:inflatedId="@+id/layout_banned_user"
android:layout="@layout/banned_user"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
{
"formatted_address": "กรุงเทพมหานคร ประเทศไทย",
"name": "กรุงเทพมหานคร",
"types": [
"locality",
"political"
],
"routes": [
{
"distance": {
val controller = MyController().apply{
banners = getBanners(),
productItems = getPromotionProducts()
}
recyclerView.layoutManager = LinearLayoutManager(this)
recyclerView.setHasFixedSize(false)
recyclerView.setController(controller)
class Controller : EpoxyController() {
private var productItems = emptyList<Product>()
fun setProductItems(productItems: List<Product>) {
this.productItems = productItems
requestModelBuild()
}
override fun buildModels() {
LabelEpoxyModel_() // Model from LabelEpoxy.kt
class Controller : EpoxyController() {
private var banner: Banner? = null
fun setBanner(banner: Banner?) {
this.banner = banner
requestModelBuild()
}
override fun buildModels() {
<?xml version="1.0" encoding="utf-8"?>
<com.minibugdev.epoxyexample.epoxy.models.BannerEpoxy
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageViewBanner"
@EpoxyModelClass(layout = R.layout.row_product_item)
abstract class ProductItemEpoxy : EpoxyModelWithHolder<Holder>() {
@EpoxyAttribute lateinit var product: Product
override fun bind(holder: Holder) {
with(holder) {
Glide.with(this.productImage)
.load(product.image)
.centerCrop()
@ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
class LabelEpoxy @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : AppCompatTextView(context, attrs, defStyleAttr) {
@TextProp
fun setLabel(label: CharSequence?) {
this.text = label
@ModelView(defaultLayout = R.layout.row_image_ratio, fullSpan = false)
class BannerEpoxy @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr) {
@ModelProp
fun setImageUrl(imageUrl: String?) {
Glide.with(imageViewBanner)