我有下面的代码我想NotiFy只有他列出的单个项目不是整个列表,好像我们将NotiFy整个列表它将重新加载数据,这消耗大量的内存,看起来很丑。任何人都知道更好的方法来提高性能应用
@Command
public void valueChangedListnerForCombo(
@BindingParam("Code") Combobox combobox,
@BindingParam("BeanData") Record record,
@BindingParam("ColumnName") String columnName) {
super.valueChangedListnerForCombo(combobox, record, columnName);
if (!adminNewListModelList.contains(record) && !changedListModel.contains(record)){
changedListModel.add(record);
BindUtils.postNotifyChange(null, null, this , "adminListboxViewModel");
}
}
答案 0 :(得分:1)
编辑: 你可以像这样通知改变一个对象:
BindUtils.postNotifyChange(null, null, record, "*");
您的事业的结果:什么都没有。
原因:因为您执行add
操作。如果它是update
record
,这将起作用。
您将对象添加到listModel,以便更改listModel并且必须得到通知。
如果您只拨打listmodel
,而不是通过viewmodel
拨打电话,那么您通常会获得性能提升。 (尝试在对象的getter上设置记录器并查看所有被调用的内容)
BindUtils.postNotifyChange(null, null, changedListModel, "*");
编辑2:
你的方法中有你的组合框
尝试执行以下操作而不是postNotifyChanged
combobox.invalidate();
这应该将组合框正确设置为基础模型,即刚刚更改的内容。