这是场景:
我有一个充满“Koe”对象的 listView,在 listView 中,“Koe”对象由它们的 LabID 属性列出。
public class Koe {
private final SimpleIntegerProperty koeID = new SimpleIntegerProperty();
private final SimpleStringProperty labID = new SimpleStringProperty("");
...
//GETTERS
public int getKoeID(){
return koeID.get();
}
public String getLabID(){
return labID.get();
}
...
//SETTERS
public void setKoeID(int iKoeID) {
koeID.set(iKoeID);
}
public void setLabID(String sLabID){
labID.set(sLabID);
}
...
@Override
public String toString(){
return "" + labID.get();
}
现在,一旦选择了 Koe,Koe 的数据就会加载到另一个窗格中,用户可以在其中编辑它并按下 Save 按钮。当按下 Save 按钮时,TextFields 中的值将保存到 Koe 对象中。
...
k.setLabID(txtLabID.getText());
...
然而,问题是当用户编辑 Koe 对象的 LabID 时,ListView 不会在 ListView 中显示新的 LabID,直到 ListView 被刷新(作为测试,我尝试在用户点击 Save 按钮时添加一个虚拟 Koe 对象强制刷新,然后它似乎工作)。
我做了一些关于它的阅读,我知道 ListView 应该链接到 SimpleStringProperty 对象。但是,当用户点击 Save 按钮时,setLabID() 方法会更新 Koe 的 LabID(它是一个 SimpleStringProperty 对象)?这与 toString() 方法有关吗?因为这被用来在 listView 中显示 Koe 的 labID?但是话又说回来,这个 toString() 方法是链接到 labID SimpleStringProperty 的吗?
如您所见,我有点困惑。虽然,一切正常,但这只是刷新 ListView 的问题,我还没有解决。