epoxy-adapter / com.airbnb.epoxy.preload / EpoxyModelPreloader

EpoxyModelPreloader

abstract class EpoxyModelPreloader<T : EpoxyModel<*>, U : ViewMetadata?, P : PreloadRequestHolder>

Describes how view content for an EpoxyModel should be preloaded.

Parameters

T - The type of EpoxyModel that this preloader applies to

U - The type of view metadata to provide to the request builder.

P - The type of PreloadRequestHolder that will execute the preload request

Constructors

<init>

EpoxyModelPreloader(modelType: Class<T>, preloadableViewIds: List<Int>)

Describes how view content for an EpoxyModel should be preloaded.

Properties

modelType

val modelType: Class<T>

preloadableViewIds

val preloadableViewIds: List<Int>

A list of view ids, one for each view that should be preloaded. This should be left empty if the EpoxyModel's type uses the Preloadable interface.

Functions

buildViewMetadata

abstract fun buildViewMetadata(view: View): U

Provide optional metadata about a view. This can be used in EpoxyModelPreloader.buildRequest

startPreload

abstract fun startPreload(epoxyModel: T, preloadTarget: P, viewData: ViewData<U>): Unit

Start a preload request with the given target.

viewSignature

open fun viewSignature(epoxyModel: T): Any?

An optional signature to differentiate views within the same model. This is useful if your EpoxyModel can contain varying amounts of preloadable views, or preloadable views of varying sizes.

Companion Object Functions

with

fun <T : EpoxyModel<*>, P : PreloadRequestHolder> with(preloadableViewIds: List<Int> = emptyList(), doPreload: (epoxyModel: T, preloadTarget: P, viewData: ViewData<ViewMetadata?>) -> Unit): EpoxyModelPreloader<T, ViewMetadata?, P>
fun <T : EpoxyModel<*>, U : ViewMetadata?, P : PreloadRequestHolder> with(preloadableViewIds: List<Int> = emptyList(), viewMetadata: (View) -> U, viewSignature: (T) -> Any? = { _ -> null }, doPreload: (epoxyModel: T, preloadTarget: P, viewData: ViewData<U>) -> Unit): EpoxyModelPreloader<T, U, P>

Helper to create a EpoxyModelPreloader.

fun <T : EpoxyModel<*>, U : ViewMetadata?, P : PreloadRequestHolder> with(preloadableViewIds: List<Int> = emptyList(), epoxyModelClass: Class<T>, viewMetadata: (View) -> U, viewSignature: (T) -> Any? = { _ -> null }, doPreload: (epoxyModel: T, preloadTarget: P, viewData: ViewData<U>) -> Unit): EpoxyModelPreloader<T, U, P>

Helper to create a EpoxyModelPreloader. This is similar to the other helper methods but not inlined so it can be used with Java.