Делегировать некоторые функции от - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть SelectableItemsAdapterDelegate класс, который реализует интерфейс (чтобы уменьшить шаблон, реализующий эту функциональность). Мой адаптер также реализует этот интерфейс, но мне нужны некоторые взаимодействия с этим адаптером от делегата, например notifyDatasetChanged(). Поэтому для конструктора SelectableItemsAdapterDelegate требуется ссылка на адаптер, которая недоступна во время создания. Какой шаблон можно использовать для решения вышеупомянутой проблемы, позволяя мне реализовать этот интерфейс различными типами RecyclerAdapter?

Существует интерфейс, реализованный адаптером и делегатом:

interface ISelectableItemsAdapter<T> {
    fun setSelected(pos: Int): Pair<Boolean, Int>
    fun selectAll(): Pair<Boolean, Int>
    fun deselectAll(): Pair<Boolean, Int>
    val selected: Selection<T>
    fun isSelected(pos: Int): Boolean
}

Эта функция требуется ссылка на адаптер от делегата:

override fun setSelected(pos: Int): Pair<Boolean, Int> {
        if (selectedItems[pos] == null) {
            selectedItems.put(pos, adapter.getItem(pos))
        } else {
            selectedItems.delete(pos)
        }
        adapter.notifyItemChanged(pos)
        return getSelectedCount()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...