Skip to content

Commit

Permalink
add vm, viewModel attr
Browse files Browse the repository at this point in the history
  • Loading branch information
sjjeong committed Jan 8, 2020
1 parent 9bf6798 commit 8d4f741
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 12 deletions.
1 change: 1 addition & 0 deletions app/src/main/res/layout/activity_mvvm.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.StaggeredGridLayoutManager"
app:spanCount="3"
bind:dino_vm="@{vm}"
bind:dino_itemLayout="@{@layout/item_vector_asset}"
bind:dino_itemSpace="@{`8dp`}"
bind:dino_items="@{vm.vectorAssetItems}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,7 @@ fun RecyclerView.setDinoAdapter(
@LayoutRes adapterItemId: Int,
items: List<Any>?
) {
val simpleAdapter =
this.adapter as? DinoAdapter
?: DinoAdapter(adapterItemId).also {
this.adapter = it
}
simpleAdapter.replaceAll(items)
setDinoAdapterWithEventHolder(adapterItemId, items, null)
}

/**
Expand All @@ -52,6 +47,36 @@ fun RecyclerView.setDinoAdapterWithEventHolder(
simpleAdapter.replaceAll(items)
}

/**
* dino_itemLayout="@{@layout/item_main}"
* dino_items="@{vm.liveMainItem}"
* dino_vm="@{vm}
*/
@Suppress("UNCHECKED_CAST")
@BindingAdapter("dino_itemLayout", "dino_items", "dino_vm")
fun RecyclerView.setDinoAdapterWithVm(
@LayoutRes adapterItemId: Int,
items: List<Any>?,
vm: Any?
) {
setDinoAdapterWithEventHolder(adapterItemId, items, vm)
}

/**
* dino_itemLayout="@{@layout/item_main}"
* dino_items="@{vm.liveMainItem}"
* dino_viewModel="@{viewModel}
*/
@Suppress("UNCHECKED_CAST")
@BindingAdapter("dino_itemLayout", "dino_items", "dino_viewModel")
fun RecyclerView.setDinoAdapterWithViewModel(
@LayoutRes adapterItemId: Int,
items: List<Any>?,
viewModel: Any?
) {
setDinoAdapterWithEventHolder(adapterItemId, items, viewModel)
}

/**
* dino_diffCallback="@{(Object)MainItem.Companion}"
* dino_itemLayout="@{@layout/item_main}"
Expand All @@ -64,12 +89,7 @@ fun RecyclerView.setDinoListAdapter(
diffCallback: DiffUtil.ItemCallback<Any>,
items: List<Any>?
) {
val simpleListAdapter =
this.adapter as? DinoListAdapter
?: DinoListAdapter(dino_itemLayout, diffCallback).also {
this.adapter = it
}
simpleListAdapter.submitList(items)
setDinoListAdapterWithEventHolder(dino_itemLayout, diffCallback, items, null)
}

/**
Expand All @@ -94,6 +114,40 @@ fun RecyclerView.setDinoListAdapterWithEventHolder(
simpleListAdapter.submitList(items)
}

/**
* dino_diffCallback="@{(Object)MainItem.Companion}"
* dino_itemLayout="@{@layout/item_main}"
* dino_items="@{vm.liveMainItem}"
* dino_vm="@{vm}
*/
@Suppress("UNCHECKED_CAST")
@BindingAdapter("dino_itemLayout", "dino_diffCallback", "dino_items", "dino_vm")
fun RecyclerView.setDinoListAdapterWithVm(
@LayoutRes dino_itemLayout: Int,
diffCallback: DiffUtil.ItemCallback<Any>,
items: List<Any>?,
vm: Any?
) {
setDinoListAdapterWithEventHolder(dino_itemLayout, diffCallback, items, vm)
}

/**
* dino_diffCallback="@{(Object)MainItem.Companion}"
* dino_itemLayout="@{@layout/item_main}"
* dino_items="@{vm.liveMainItem}"
* dino_viewModel="@{viewModel}
*/
@Suppress("UNCHECKED_CAST")
@BindingAdapter("dino_itemLayout", "dino_diffCallback", "dino_items", "dino_viewModel")
fun RecyclerView.setDinoListAdapterWithViewModel(
@LayoutRes dino_itemLayout: Int,
diffCallback: DiffUtil.ItemCallback<Any>,
items: List<Any>?,
viewModel: Any?
) {
setDinoListAdapterWithEventHolder(dino_itemLayout, diffCallback, items, viewModel)
}



@BindingAdapter("dino_itemSpace")
Expand Down

0 comments on commit 8d4f741

Please sign in to comment.