我想了解ObservableList
和Realms
的概念。我试图像这样创建一个ObservableList
的实例:
public ObservableList createObservableList() {
ObservableList myObsList = new ObservableList(new ArrayList<String>(),
"test") {
};
return myObsList;
}
但是当我调用这种方法时,我得到了:
org.eclipse.core.runtime.AssertionFailedException: null argument:Realm cannot be null
at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85)
我知道这有一些事情要做,我们没有设置默认域。但是,我在哪里可以找到有关这些概念的文档?
我看过这个:
http://wiki.eclipse.org/JFace_Data_Binding/Observable
...但它包含非常有限的信息/示例。
我也有Eclipse EMF书,但找不到任何如何使用的例子。 ObservableList
我在哪里可以找到有关Observable背后的规则/概念的教程/文档?
我现在尝试了以下内容:
public static ObservableList createObservableList() {
ObservableList myObsList = null;
Realm.getDefault().exec(new Runnable() {
@Override
public void run() {
myObsList = new ObservableList(new ArrayList<String>(), "test") {
};
}
});
return myObsList;
}
...但是这不起作用,因为myObsList
必须是最终的。将其更改为final会使其无法在run方法中更新它。
有什么建议吗?
答案 0 :(得分:2)
未设置领域是默认值。如果默认域可用,您可以测试:
if (Realm.getDefault() == null) {
并在必要时设置Realm(用于当前线程):
Realm.setDefault(new Realm());
}
(JFace数据绑定是一项挑战......)
答案 1 :(得分:2)
您可以使用静态方法
SWTObservables.getRealm(display)
获取与给定显示的UI线程关联的Realm。 Realm的API页面提供一些提示肯定会很好。
答案 2 :(得分:1)
嗯,我同情,Eclipse API有时是一个奇怪的工作。
我在JFaces FAQ中找到了这个:
http://wiki.eclipse.org/JFace_Data_Binding_FAQ#What_is_a_Realm.2C_and_do_I_need_to_care.3F
看起来你可以使用以下方式在域中运行:
Realm.exec(Runnable runnable)
所以尝试从Runnable块中创建可观察列表。希望有所帮助。
请参阅:
如果我们拥有用户友好的URL的Eclipse人员会很好!
答案 3 :(得分:1)
run()
方法在静态主方法中调用Realm.runWithDefault()
Main main = new Main();
Realm realm = SWTObservables.getRealm(Display.getDefault());
//for JFace data binding
Realm.runWithDefault(realm, main);