TablewView setAll из резервного списка сбрасывает выделение, но не фокус - PullRequest
0 голосов
/ 15 марта 2020

Я работаю над приложением, аналогичным диспетчеру задач, в котором весь вспомогательный список TableView заменяется результатом периодического запуска программы из командной строки. Я использую setAll, чтобы установить в табличном представлении самые новые элементы. Это работает, но сбрасывает выделение в представлении.

Интересно, что синяя полоса фокусировки не перемещается, но очень маленький контур отображается на первом элементе табличного представления после того, как он был обновлен с setAll. Я предполагаю, что именно так отображается выбранный индекс. Когда я использую клавиши со стрелками для навигации, выбор будет периодически возвращаться к первому элементу списка.

Кто-нибудь знает, как решить эту проблему?

1 Ответ

1 голос
/ 15 марта 2020

Я нашел способ сделать это, но я уверен, что есть лучший способ. Я вручную вычисляю разницу между новым и предыдущим состоянием. Затем я вызываю методы removeAll и addAll соответственно:

object PortBindingLock

private fun reloadBindings() {
    synchronized(PortBindingLock) {
        val previous = this.portBindings.toSet()
        val current = processService.processPortBindings().toSet()
        val toRemove = Sets.difference(previous, current)
        val toAdd = Sets.difference(current, previous)
        this.portBindings.removeAll(toRemove)
        this.portBindings.addAll(toAdd)
    }

}
...