gpt4 book ai didi

kotlin - 将域类包装到 ItemViewModel

转载 作者:行者123 更新时间:2023-12-02 13:39:17 24 4
gpt4 key购买 nike

我有一个域类

class UserItem(var simpleItem: Item, var id: String, var status: String, var price: Int) {
var upperLimit: Int = 0
var lowerLimit: Int = 0
/* methods here */
}

和一个存储这些对象的类
class Trades {
val saleableItems: ArrayList<UserItem> = ArrayList()
val soldAwaitingItems: ArrayList<UserItem> = ArrayList()

/* methods */
}
saleableItemssoldAwaitingItemsTrades 内部更新

我要显示 saleableItems使用 TableView这样我就可以在不将属性转换为 TornadoFX 属性的情况下绑定(bind)数据和 View ,所以我包装了 UserItemItemViewModel
class UserItemModel(uItem: UserItem) : ItemViewModel<UserItem>() {
val simpleItem = bind { item?.observable(UserItem::simpleItem) }
val id = bind { item?.observable(UserItem::id) }
val status = bind { item?.observable(UserItem::status) }
val price = bind { item?.observable(UserItem::price) }
val upperLimit = bind { item?.observable(UserItem::upperLimit) }
val lowerLimit = bind { item?.observable(UserItem::lowerLimit) }

init {
item = uItem
}
}

有什么方法可以包装 TradesItemViewModel<Trades>所以我有类似的东西
class TradesModel : ItemViewModel<Trades>() {
val saleableItems: ObservableList<UserItemModel>
val soldAwaitingItems: ObservableList<UserItemModel>
}

然后在 View 中使用它
class TradesView : View("My View") {
val tradesModel: TradesModel by inject()

tableview(tradesModel.saleableItems) {
column("Name", UserItemModel::simpleItem)
column("Price", UserItemModel::price)
column("Lower limit", UserItemModel::lowerLimit)
column("Upper limit", UserItemModel::upperLimit)
}
}

最佳答案

你有没有尝试过这样的事情?

class UserItemModel(uItem: UserItem) : ItemViewModel<UserItem>() {
// Same way you defined previously.
}

class TradesViewModel {
val saleableItems: SimpleListProperty<UserItemModel>(FXCollections.observableArrayList())
val soldAwaitingItems: SimpleListProperty<UserItemModel>(FXCollections.observableArrayList())
}

class TradesView : View("My View") {
val tradesModel: TradesViewModel by inject()

init {
with(root) {
tableview(tradesModel.saleableItems) {
column("Name", UserItemModel::simpleItem)
column("Price", UserItemModel::price)
column("Lower limit", UserItemModel::lowerLimit)
column("Upper limit", UserItemModel::upperLimit)
}
}
}
}

此外,如果您的表是只读的,您可以定义 UserItemModel作为一个简单的数据类 - 无需扩展 ItemViewModel或执行属性绑定(bind)。

关于kotlin - 将域类包装到 ItemViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45241125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com