Skip to content

Instantly share code, notes, and snippets.

@oogatta
Created October 1, 2017 05:59
Show Gist options
  • Save oogatta/554c5723cca6f1951c6de940dbf077a9 to your computer and use it in GitHub Desktop.
Save oogatta/554c5723cca6f1951c6de940dbf077a9 to your computer and use it in GitHub Desktop.
class MainActivity : AppCompatActivity() {
val controller = MySweetController()
var vmList = arrayListOf<MySweetViewModelable>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
vmList.add(TitleViewModel("Hello, Ebisu!"))
// ...
my_sweet_recycler_view.adapter = controller.adapter
updateController()
}
private fun updateController() {
controller.setData(vmList)
}
}
interface MySweetViewModelable {}
class TitleViewModel(val text: String): MySweetViewModelable
class FeedViewModel(
val title: String,
val text: String
) : MySweetViewModelable
class FooterViewModel(val text: String): MySweetViewModelable
class MySweetController: TypedEpoxyController<List<MySweetViewModelable>>() {
@AutoModel lateinit var title: TitleBindingModel_
@AutoModel lateinit var footer: FooterBindingModel_
override fun buildModels(vmList: List<MySweetViewModelable>?) {
vmList ?: return
title.vm(vmList.first() as TitleViewModel)
vmList.subList(1, vmList.size - 1).forEachIndexed { index, vm ->
FeedBindingModel_()
.id(index)
.vm(vm as FeedViewModel)
.addTo(this)
}
footer.vm(vmList.last() as FooterViewModel)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment