epoxy-adapter / com.airbnb.epoxy / SimpleEpoxyModel

SimpleEpoxyModel

open class SimpleEpoxyModel : EpoxyModel<View!>

Helper class for cases where you don't need to do anything special when binding the view. This allows you to just provide the layout instead of needing to create a separate EpoxyModel subclass. This is useful for static layouts. You can also specify an onClick listener and the span size.

Constructors

<init>

SimpleEpoxyModel(layoutRes: Int)

Functions

bind

open fun bind(view: View): Unit

equals

open fun equals(other: Any?): Boolean

getDefaultLayout

open fun getDefaultLayout(): Int

getSpanSize

open fun getSpanSize(totalSpanCount: Int, position: Int, itemCount: Int): Int

hashCode

open fun hashCode(): Int

onClick

open fun onClick(listener: OnClickListener!): SimpleEpoxyModel!

span

open fun span(span: Int): SimpleEpoxyModel!

unbind

open fun unbind(view: View): Unit

Inherited Functions

addIf

open fun addIf(condition: Boolean, controller: EpoxyController): Unit

Add this model to the given controller if the condition is true. Can only be called from inside EpoxyController#buildModels().

open fun addIf(predicate: EpoxyModel.AddPredicate, controller: EpoxyController): Unit

Add this model to the given controller if the AddPredicate return true. Can only be called from inside EpoxyController#buildModels().

addTo

open fun addTo(controller: EpoxyController): Unit

Add this model to the given controller. Can only be called from inside .

addWithDebugValidation

fun addWithDebugValidation(controller: EpoxyController): Unit

This is used internally by generated models to turn on validation checking when "validateEpoxyModelUsage" is enabled and the model is used with an EpoxyController.

bind

open fun bind(view: T, payloads: MutableList<Any!>): Unit

Similar to #bind(Object), but provides a non null, non empty list of payloads describing what changed. This is the payloads list specified in the adapter's notifyItemChanged method. This is a useful optimization to allow you to only change part of a view instead of updating the whole thing, which may prevent unnecessary layout calls. If there are no payloads then #bind(Object) is called instead. This will only be used if the model is used with an EpoxyAdapter

open fun bind(view: T, previouslyBoundModel: EpoxyModel<*>): Unit

Similar to #bind(Object), but provides a non null model which was previously bound to this view. This will only be called if the model is used with an EpoxyController.

buildView

open fun buildView(parent: ViewGroup): View!

Create and return a new instance of a view for this model. By default a view is created by inflating the layout resource.

getLayout

fun getLayout(): Int

getViewType

open fun getViewType(): Int

Get the view type to associate with this model in the recyclerview. For models that use a layout resource, the view type is simply the layout resource value by default.

hide

open fun hide(): EpoxyModel<T>

Change the visibility of the model so that it's view is hidden. This only works if the model is used in EpoxyAdapter or a EpoxyModelGroup, but is not supported in

id

open fun id(): Longopen fun id(id: Long): EpoxyModel<T>!

Override the default id in cases where the data subject naturally has an id, like an object from a database. This id can only be set before the model is added to the adapter, it is an error to change the id after that.

open fun id(vararg ids: Number!): EpoxyModel<T>!

Use multiple numbers as the id for this model. Useful when you don't have a single long that represents a unique id.

open fun id(id1: Long, id2: Long): EpoxyModel<T>!

Use two numbers as the id for this model. Useful when you don't have a single long that represents a unique id.

open fun id(key: CharSequence?): EpoxyModel<T>!

Use a string as the model id. Useful for models that don't clearly map to a numerical id. This is preferable to using String#hashCode() because that is a 32 bit hash and this is a 64 bit hash, giving better spread and less chance of collision with other ids.

open fun id(key: CharSequence?, vararg otherKeys: CharSequence!): EpoxyModel<T>!

Use several strings to define the id of the model.

open fun id(key: CharSequence?, id: Long): EpoxyModel<T>!

Set an id that is namespaced with a string. This is useful when you need to show models of multiple types, side by side and don't want to risk id collisions.

isShown

open fun isShown(): Boolean

Whether the model's view should be shown on screen. If false it won't be inflated and drawn, and will be like it was never added to the recycler view.

layout

open fun layout(layoutRes: Int): EpoxyModel<T>

onFailedToRecycleView

open fun onFailedToRecycleView(view: T): Boolean

Called if the RecyclerView failed to recycle this model's view. You can take this opportunity to clear the animation(s) that affect the View's transient state and return true so that the View can be recycled. Keep in mind that the View in question is already removed from the RecyclerView.

onMutation

fun onMutation(): Unit

This is used internally by generated models to do validation checking when "validateEpoxyModelUsage" is enabled and the model is used with an EpoxyController. This method validates that it is ok to change this model. It is only valid if the model hasn't yet been added, or the change is being done from an EpoxyController.Interceptor callback.

onViewAttachedToWindow

open fun onViewAttachedToWindow(view: T): Unit

Called when this model's view is attached to the window.

onViewDetachedFromWindow

open fun onViewDetachedFromWindow(view: T): Unit

Called when this model's view is detached from the the window.

onVisibilityChanged

open fun onVisibilityChanged(percentVisibleHeight: Float, percentVisibleWidth: Float, visibleHeight: Int, visibleWidth: Int, view: T): Unit

TODO link to the wiki

onVisibilityStateChanged

open fun onVisibilityStateChanged(visibilityState: Int, view: T): Unit

TODO link to the wiki

reset

open fun reset(): EpoxyModel<T>

Sets fields of the model to default ones.

shouldSaveViewState

open fun shouldSaveViewState(): Boolean

Whether the adapter should save the state of the view bound to this model.

show

open fun show(): EpoxyModel<T>

Change the visibility of the model so that it's view is shown. This only works if the model is used in EpoxyAdapter or a EpoxyModelGroup, but is not supported in

open fun show(show: Boolean): EpoxyModel<T>

Change the visibility of the model's view. This only works if the model is used in EpoxyAdapter or a EpoxyModelGroup, but is not supported in

spanSize

fun spanSize(totalSpanCount: Int, position: Int, itemCount: Int): Int

Returns the actual span size of this model, using the SpanSizeOverrideCallback if one was set, otherwise using the value from #getSpanSize(int, int, int)

spanSizeOverride

open fun spanSizeOverride(spanSizeCallback: EpoxyModel.SpanSizeOverrideCallback?): EpoxyModel<T>!

toString

open fun toString(): String

validateStateHasNotChangedSinceAdded

fun validateStateHasNotChangedSinceAdded(descriptionOfChange: String!, modelPosition: Int): Unit

This is used internally by generated models to do validation checking when "validateEpoxyModelUsage" is enabled and the model is used with a EpoxyController. This method validates that the model's hashCode hasn't been changed since it was added to the controller. This is similar to #onMutation(), but that method is only used for specific model changes such as calling a setter. By checking the hashCode, this method allows us to catch more subtle changes, such as through setting a field directly or through changing an object that is set on the model.