PagingData를 이용해 볼 수 있지 않을까하는 생각이 드네요.
https://developer.android.com/reference/kotlin/androidx/paging/PagingData#(androidx.paging.PagingData).insertHeaderItem(androidx.paging.TerminalSeparatorType,kotlin.Any)
fun <T : Any!, R : Any!> PagingData<T!>!.flatMap(transform: (suspend (T) -> Iterable<R>)?): PagingData<R>
fun <T : Any!> PagingData<T!>!.insertHeaderItem(
terminalSeparatorType: TerminalSeparatorType! = FULLY_COMPLETE,
item: T!
): PagingData<T>
위의 PagingData 함수 중 하나를 이용해서 처리해 볼 수 있을 것 같은데요.
PagingData 함수 중에 InsertHeaderItem이 있는데, 데이터를 불러오고 나서 collect할 때 pagingData에 원하시는 아이템을 집어넣으시면 어떨가 생각하는데요. flatMap과 같이 사용하면 아래와 같은 형태가 될 것 같네요. 테스트는 직접 해보시기 바랍니다.
pagingFlow
.flatMap { pagingData -> {
val firstItm = getFirstItem()
pagingData.insertHeaderItem { before: String?, after: String? ->
if (bofore == null && after != null) {
firstItm
} else {
null
}
}
}