/
StickyHeaderController.kt
42 lines (38 loc) · 1.53 KB
/
StickyHeaderController.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package com.airbnb.epoxy.kotlinsample
import android.content.Context
import android.widget.Toast
import com.airbnb.epoxy.EpoxyController
import com.airbnb.epoxy.kotlinsample.models.StickyItemEpoxyHolder
import com.airbnb.epoxy.kotlinsample.models.itemEpoxyHolder
import com.airbnb.epoxy.kotlinsample.models.stickyItemEpoxyHolder
import com.airbnb.epoxy.stickyheader.StickyHeaderCallbacks
/**
* Showcases [EpoxyController] with sticky header support
*/
class StickyHeaderController(
private val context: Context
) : EpoxyController(), StickyHeaderCallbacks {
override fun buildModels() {
for (i in 0 until 100) {
when {
i % 5 == 0 -> stickyItemEpoxyHolder {
id("sticky-header $i")
title("Sticky header $i")
listener {
Toast.makeText(this@StickyHeaderController.context, "clicked", Toast.LENGTH_LONG).show()
}
}
else -> itemEpoxyHolder {
id("view holder $i")
title("this is a View Holder item")
listener {
Toast.makeText(this@StickyHeaderController.context, "clicked", Toast.LENGTH_LONG)
.show()
}
}
}
}
}
// Feel feel to use any logic here to determine if the [position] is sticky view or not
override fun isStickyHeader(position: Int) = adapter.getModelAtPosition(position) is StickyItemEpoxyHolder
}