MVVM в Java без изменения модели (с ее бизнес-логикой) - PullRequest
1 голос
/ 22 июня 2019

В моей модели бизнес-логики я использую класс с ArrayList для хранения объектов типа Content.Все отлично работает.

Однако я понятия не имею, как связать эту модель с ModelView, не внося никаких изменений (за исключением методов получения / установки) в модель.

(РЕДАКТИРОВАТЬ :) Что я имею в виду: все связанные с моделью классы не могут быть изменены на свойства (например, String -> SimpleStringProperty)

Возможно ли реализовать MVVM без изменения модели (например, изменить ArrayListв ObservableArrayList и т., MainWindow.fxml)

    public class MainWindow {
        @FXML
        private TableView<UploaderDB> uploaderTable;

        @FXML public void initialize(URL fxmlFileLocation, ResourceBundle resources {    
uploaderTable.itemsProperty().bind(modelView.items);
        }
    }
    <?xml version="1.0" encoding="UTF-8"?>
    <?import javafx.scene.control.*?>
    <?import javafx.scene.control.cell.PropertyValueFactory?>
    <?import javafx.scene.layout.AnchorPane?>
    <?import javafx.scene.layout.VBox?>
    <AnchorPane prefHeight="700.0" prefWidth="1100.0"             
    xmlns="http://javafx.com/javafx/8.0.172-ea"         
    xmlns:fx="http://javafx.com/fxml/1" fx:controller="gui.MainWindow">
       <children>
          <VBox layoutX="14.0" layoutY="14.0" prefHeight="581.0" 
    prefWidth="662.0">
         <children>
    <TableView fx:id="uploaderTable" prefHeight="581.0" prefWidth="396.0" >

               <columns>
                   <TableColumn  prefWidth="180.0" text="Name" >
                       <cellValueFactory>
                           <PropertyValueFactory property="$uploaderName" />
                      </cellValueFactory>
                   </TableColumn>
                   <TableColumn  prefWidth="100.0" text="Uploads" >
                       <cellValueFactory>
                           <PropertyValueFactory property="" />
                       </cellValueFactory>
                   </TableColumn>
            </columns>
                <!--</!-->
            </TableView>
         </children></VBox>
    </AnchorPane>

1 Ответ

0 голосов
/ 24 июня 2019

Если вы хотите обновить List в модели, вы должны использовать ObservableList, а не ObservableArrayList.

См. Этот ответ от @ Tunaki

ObservableList hasnне обновлять ArrayList

...