Комментарии 4
НЛО прилетело и опубликовало эту надпись здесь
Hashtable вполне можно заменить на HashMap/ConcurrentHashMap ради производительности.
Но с функцией getCellInfo не все так просто, на самом деле она у меня немного больше, а для статьи решил сократить.
protected fun getCellInfo(viewModel: Any): CellInfo {
// Find info with simple class check:
cellMap.entries
.filter { it.key == viewModel.javaClass }
.first { return it.value }
// Find info with inheritance class check:
cellMap.entries
.filter { it.key.isInstance(viewModel) }
.first {
cellMap[viewModel.javaClass] = it.value
return it.value
}
throw Exception("Cell info for class ${viewModel.javaClass.name} not found.")
}
У нас есть Android/iOS проект в котором вся бизнес логика написана общим кодом на С++, нативным же только UI и некоторые специфичные вещи. Для генерации мостов между С++ и Kotlin/Objective-C мы используем Djinni. Классы объектов, которые мы передаем в адаптер, являются приватными и мы не можем напрямую их использовать.
Использовать поиск только по isInstance мы тоже не можем, потому-что ViewModel классы могут наследовать друг друга (в другом нашем проекте) и в этом случае нужна точная проверка класса.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Избавляемся от рутины RecyclerView.Adapter с помощью DataBinding