Как стать автором
Обновить

Комментарии 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 классы могут наследовать друг друга (в другом нашем проекте) и в этом случае нужна точная проверка класса.

А вообще да, есть над чем задуматься. Спасибо!
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории