我正在研究JFace
Eclipse 开发。我制作了一个插件来充当ComboViewer
. 该提供程序本质上将数据模型提供ArrayList
为硬编码值。无论如何,我试图理解这种方法。
我ComboViewer
通过comboViewer.setInput(list)
方法设置模型。
在按下按钮时,我调用另一个对象的方法来更新list
我传递input
的ComboViewer
(添加另一个元素)并且我调用comboViewer.refresh
以反映更改,但没有任何反应。
结果是:
我需要调用comboViewer.setInput(list)
更新后的列表来查看我的 UI 组合中数据的变化(即之前的添加)。我发现comboViewer.refresh
只有当我将comboViewer
' 作为输入传递Object
并对其进行修改时,它才会反映任何更新。即如果我这样做:
List<SomeObject> data = ((List<SomeObject>)(comboViewer.getInput()));
data.add(new SomeObject("aaa","cccc"));
comboViewer.refresh();
只有这样,数据才会被刷新。但我不明白使用这些 API 的正确方法是什么。
我是否应该持有并修改我在setInput
方法中传递的对象?感觉我不应该这样做。那么这样做的目的是refresh
什么?
更新提供给Viewer
s 的数据的正确方法是什么?