编辑:我已经用一个带有PropertyValueFactory的cellValueFactory创建了和TableView,但是当我更新表示TableView数据的ObservableList时,我的TableView将不会更新。我确信readNctsvorgaenge()创建的新列表已经更新,并且包含了附加项。这是用mvvmfx->moodel view viewmodel实现的
这是FXML文件...
<AnchorPane xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://html" target="_blank">javafx.com/fxml/1" fx:controller="cuscus.ui.vorgangnctsmonitor.MonitorNctsvorgang">
<children>
<TableView fx:id="nctsvorgaengeTable"
AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0"
AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<columns>
<TableColumn prefWidth="175.0" text="%common.Bezugsnummer">
<cellValueFactory>
<PropertyValueFactory property="bezugsnummer" />
</cellValueFactory>
</TableColumn>
</columns>
</TableView>
</children>
</AnchorPane>
视图的控制器部分:
public class MonitorNctsvorgang implements FxmlView<MonitorNctsvorgangViewModel> {
@FXML
private TableView<MonitorNctsvorgangTableViewModel> nctsvorgaengeTable;
@InjectViewModel
private MonitorNctsvorgangViewModel viewModel;
public void initialize() {
nctsvorgaengeTable.setItems(viewModel.getNctsvorgaenge());
viewModel.selectedTableRowProperty().bind(nctsvorgaengeTable.getSelectionModel().selectedItemProperty());
viewModel.setOnSelect(vm -> nctsvorgaengeTable.getSelectionModel().select(vm));
}
}
TableView的数据模型是...
public class MonitorNctsvorgangTableViewModel {
private final Nctsvorgang nctsvorgang;
public MonitorNctsvorgangTableViewModel(Nctsvorgang nctsvorgang) {
this.nctsvorgang = nctsvorgang;
}
public String getBezugsnummer() {
return nctsvorgang.getBezugsnummer();
}
}
我的viewmodel
public class MonitorNctsvorgangViewModel implements ViewModel {
@InjectScope
private NctsvorgangDetailScope detailScope;
@Inject
private CusCusDao cuscusDao;
private final ObservableList<MonitorNctsvorgangTableViewModel> vorgaenge = FXCollections.observableArrayList();
public ObservableList<MonitorNctsvorgangTableViewModel> getNctsvorgaenge() {
return vorgaenge;
}
public void initialize() {
updateNctsvorgaenge();
}
public void onNctsvorgangUpdateEvent(@Observes NctsvorgangUpdatedEvent event) {
updateNctsvorgaenge();
}
private void updateNctsvorgaenge() {
final List<Nctsvorgang> allVorgaenge = cuscusDao.readNctsvorgaenge();
vorgaenge.clear();
allVorgaenge.forEach(vorgang -> vorgaenge.add(new MonitorNctsvorgangTableViewModel(vorgang)));
}
}
Nctsvorgang {
String bezugsnummer;
//getter setter here
}
所以我想知道为什么当我将不同的ObservaleList读入ObservaleList时,我的TableView没有更新/刷新。我遵循的是一个示例(mvvmFX联系人示例),我非常肯定代码与示例中的代码相同。这几天我一直被困在这个问题上,Googlesearch没有解决我的问题,这让我发疯了。抱歉,如果双发,但我已经厌倦了寻找答案:/任何帮助将非常感谢。
我发现了我的问题,我的ViewModel没有注释@singleton
我目前正在重构遗留代码,以使用Android架构组件,并在一种存储库模式中设置一个房间数据库和截取请求。因此,表示层/域层要求存储库获取LiveData对象进行观察,或告诉他与服务器同步,然后删除旧的db条目,并从服务器中重新提取所有当前条目。 我已经写了同步部分的测试,所以我确信,对象被正确地获取并插入到数据库中。但是当写一个测试来观察db表的条目时(并测试对象是否被正确保存,以及在将它们放入d
我使用RecycerView使用游标显示sqlite数据库中的数据,当我从数据库中删除一项时,该项将被删除,但我的RecycerView视图不会刷新。 我必须回到我的主要活动,然后数据被刷新。我已经使用了notifyItemRemoved()和notifyDataSetChanged()
问题内容: 我有一个包含10个元素的div,这些元素将被逐个更新,延迟时间为2秒。下面是相同的代码 但是,当我运行它时,所有元素都会一起更新。该程序只是添加一个延迟添加一个开始,并且所有元素都一起更新(被标记)。如何制作代码来逐一标记元素? 问题答案: 您正在打破React的两个基本规则: 不要直接改变状态 如果根据现有状态更新状态,请使用回调形式,因为状态更新可能是异步的(无论如何,在您的示例中
我正在用一些初始数据绘制一个条形图,然后在单击按钮时尝试更新。我收到错误“未捕获的类型错误:无法读取未定义的属性'长度'”。单击更新后,将发生错误。如何解决此问题并启用更新功能以绘制新的条形图? D3代码:
在下面的代码中,我单击Submit按钮。在backing\u home中,通过ajax调用将布尔值更改为true。 如果我删除渲染的,我会正确地看到更新的输出。但是对于下面的代码,它是。我认为它没有呈现新值 可能是什么原因?
我有一个带有分页的表视图。如下(简化): 问题是,当我更新数据时(ObservableList)。更改在表视图中不可见。 在我看来,问题出在中。如果我使用设置项目,所有更改都会立即在中可见。 有什么想法,我该怎么解决这个问题? 编辑 我正在更新如下数据: