Я пытаюсь создать ObservableList() для использования с моим Tableview. Тип StringData — это класс, содержащий две переменные SimpleStringProperty var. Я хочу создать этот список и привязать каждую переменную к определенной позиции списка. Что-то вроде этого:
public class DownloadService implements Runnable {
//List that will be updated
public List<SimpleStringProperty> dList = new ArrayList<SimpleStringProperty>();
public class MainScreenController implements Initializable {
//List that populates TV
private ObservableList<DataString> data = FXCollections.observableArrayList();
//tableview
@FXML
private TableView<DataString> tbl_table;
DownloadService download;
...}
public class DataString{
public final SimpleStringProperty state;
public final SimpleStringProperty sinc;
public SimpleStringProperty stateProperty() {
return state;
}
public void setState(String status) {
state.set(status);
}
public SimpleStringProperty sincProperty() {
return sinc;
}
public void setSinc(String sinc) {
this.sinc.set(sinc);
}
}
На MainScreenController я пытаюсь сделать это:
DataString s = new DataString();
s.state.bind (download.dList.get(data.size()));
s.sinc.bind (download.dList.get(data.size()));
data.add(s);
tbl_table.setItems(data);
Однако я не могу обновить содержимое данных при обновлении списка в DownloadService. Я считаю, что он должен обновлять значение столбца, связанного с переменной state и sinc, каждый раз, когда DownloadService обновляет содержимое списка в каждой позиции. Я делаю что-то не так или есть другой способ привязать StringProperty к позиции в списке?
Спасибо!