Hallo Zusammen,
ich ahbe folgenes Thema. Ich habe eine Tableview mit mehreren Elementen. Nun habe ich eine Element gelöscht. Dazu wird die tableview mit der bearbeiteten ObservableArrayliste geladen und das Element ist weg. Doch leider scheint der Index noch der alte zu sein.
Folgendes Beispiel
Produkt 1 wird gelöscht
Die Tabelle sieht nun so aus und wird nach dem ändern der Werte so neu befüllt. Die ArrayList habe ich überprüft, sie einhält dich richtigen Daten.
Wähle ich nun aber Produkt 2 aus scheine ich das Produkt 1 noch auszuwählen, obwohl es nicht sichtbar ist und wähle ich nun Produkt 3 aus, dann wähle ich in der unteren Tabelle Produkt 2 aus.
Was muss ich machen, damit die tabelle nicht nur die Werte richtig darstellt sondern offenbar auch den Index neu setzt?
VG Georg
P.S.:
Das SelectionModell setze ich beim Laden der Tabelle in der intitialize-Methode
ich ahbe folgenes Thema. Ich habe eine Tableview mit mehreren Elementen. Nun habe ich eine Element gelöscht. Dazu wird die tableview mit der bearbeiteten ObservableArrayliste geladen und das Element ist weg. Doch leider scheint der Index noch der alte zu sein.
Folgendes Beispiel
Produkt 1 wird gelöscht
Bezeichnung | Anzahl |
Produkt 1 | 3 |
Produkt 2 | 5 |
Produkt 3 | 3 |
Produkt 4 | 3 |
Produkt 5 | 2 |
Die Tabelle sieht nun so aus und wird nach dem ändern der Werte so neu befüllt. Die ArrayList habe ich überprüft, sie einhält dich richtigen Daten.
Java:
private void updatestocktable() {
ArrayList<ProductCart> stockItemList = cartEngine.getStock(); //hier werden die neuen Daten aus der geänderten Daten eingefügt
bezeichStockColumn.setCellValueFactory(new PropertyValueFactory<>("bezeichnung"));
anzahlStockColumn.setCellValueFactory(new PropertyValueFactory<>("anzahl"));
preisStockColumn.setCellValueFactory(new PropertyValueFactory<>("preisText"));
ObservableList<ProductCart> stockItemObservableList = FXCollections.observableArrayList(stockItemList);
stockTable.setItems(stockItemObservableList);
}
Bezeichnung | Anzahl |
Produkt 2 | 5 |
Produkt 3 | 3 |
Produkt 4 | 3 |
Produkt 5 | 2 |
Wähle ich nun aber Produkt 2 aus scheine ich das Produkt 1 noch auszuwählen, obwohl es nicht sichtbar ist und wähle ich nun Produkt 3 aus, dann wähle ich in der unteren Tabelle Produkt 2 aus.
Was muss ich machen, damit die tabelle nicht nur die Werte richtig darstellt sondern offenbar auch den Index neu setzt?
VG Georg
P.S.:
Das SelectionModell setze ich beim Laden der Tabelle in der intitialize-Methode
Java:
private void loadStock() {
try {
stock = productCartDAO.loadProducts();
} catch (Exception e) {
e.printStackTrace();
}
bezeichStockColumn.setCellValueFactory(new PropertyValueFactory<>("bezeichnung"));
anzahlStockColumn.setCellValueFactory(new PropertyValueFactory<>("anzahl"));
preisStockColumn.setCellValueFactory(new PropertyValueFactory<>("preisText"));
stockTable.setItems(stock);
TableView.TableViewSelectionModel<ProductCart> selectionModelStockTable = stockTable.getSelectionModel();
selectionModelStockTable.setSelectionMode(SelectionMode.SINGLE);
ObservableList<Integer> selectedIndicesStockTable = selectionModelStockTable.getSelectedIndices();
selectedIndicesStockTable.addListener((ListChangeListener<Integer>) change -> {
int index = (int) (change.getList().toArray()[0]);
selectedProductId = stock.get(index).getProdId();
anzahl = stock.get(index).getAnzahl();
prodAnzahlTextField.setText(String.valueOf(anzahl));
prodHinzuButton.setDisable(false);
});
}