我正在开发一个类似任务管理器的应用程序,其中TableView的整个备份列表被定期运行命令行程序的结果所取代。我使用setAll将表视图设置为最新的项目。它可以工作,但它会重置视图中的选择。
有趣的是,蓝色焦点栏不会移动,但在使用setAll更新表视图的第一项后,会在表视图的第一项上显示一个非常小的轮廓。我猜这就是所选索引的呈现方式。当我使用箭头键导航时,所选内容将周期性地跳回到列表的第一项。
有人知道如何解决这个问题吗?
发布于 2020-03-16 01:04:14
我找到了一种方法来做这件事,但我相信还有更好的方法。我手动计算新状态和以前状态之间的差异。然后分别调用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)
}
}https://stackoverflow.com/questions/60694448
复制相似问题