我正在尝试将对象的 ArrayList 绑定(bind)到 Java SWT 列表小部件。这就是我所拥有的:
DataBindingContext bindingContext = new DataBindingContext();
//
myModel= new WritableList(buses, MyObject.class);
IObservableList listWidgetObs = SWTObservables.observeItems(listWidget);
bindingContext.bindList(listWidgetObs , myModel, null, null);
//
return bindingContext;
但不知何故,它似乎不起作用。我已经尝试了很长时间但仍然没有运气。这是我第一次尝试用 Java 进行数据绑定(bind)。如何将 ArrayList 绑定(bind)为 SWT List 小部件的数据提供者,然后将其绑定(bind)到 MyObject 类中方法调用 getName() 的值?
谢谢!
最佳答案
从您的示例来看,模型列表 (myModel
) 似乎包含 MyObject
类型的对象。但这是错误的,因为 SWT List
的内容列表必须是字符串。
您(至少)有三个选择:
- 列表中的对象必须是
String
类型,因此您必须在创建可观察列表时转换对象,或者 - 您必须在
bindingList(...)
中提供UpdateListStrategy
,或者 - 您将
ListViewer
与LabelProvider
绑定(bind)
选择取决于myModel
的对象是否可以动态改变。
如果可能的话,我通常会选择第二个选项,因为我尽量不混合使用数据绑定(bind)和 JFace,除非确实非常需要。另一种选择有时会得到一些相当难看的通知/监听器链......
关于java - 将 SWT 列表绑定(bind)到 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6141839/