Skip to content

LightYearsBehind/paged-lambda-list

Repository files navigation

λ List

Flattened Android PagedListAdapter for speedy adaptation.

Gradle

implementation "com.geniewits.pagedlambdalist:paged-lambda-list:1.1.0"

Initialization

Same as how we initialize a PagedListAdapter and PagingDataAdapter, a DiffUtil.ItemCallback<T> implementation is required.

val adapter = PagedLambdaAdapter<Any>(differ)

or

val adapter = PagingLambdaAdapter<Any>(differ)

Mapping

  • Single view type
adapter.map(
    create  = { MyViewHolder(it) { onClick(it) } },
    bind    = { holder, item -> (holder as MyViewHolder).onBind(item) }
)
  • Multiple view types
adapter
    .map(
        { it is A },
        { ViewHolderA(it) },
        { holder, item -> (holder as ViewHolderA).onBind(item) }
    )
    .map(
        { it is B },
        { ViewHolderB(it) },
        { holder, item -> (holder as ViewHolderB).onBind(item) }
    )
  • Multiple view types with placeholder
adapter
    .map(...)
    .map(
        create  = { PlaceholderViewHolder() }
        bind    = { holder, item -> (holder as PlaceholderViewHolder).onBind(item) }
    )

Using RecyclerView.Adapter?

Look over here instead.

About

Flattened Android PagedListAdapter for speedy adaptation.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages