如何改进 VirtualList 中的列表项
How to improve list items from a VirtualList
你看,其实我有一个虚拟列表小部件:
var list = new qx.ui.list.List().set({labelPath: "label"});
所以我使用 Json 存储从服务器检索数据:
var store = new qx.data.store.Json('my/resource/data.json');
store.bind("model", list, "model");
这行得通。但我需要更丰富的列表元素,不仅仅是一个图标,还有一些描述和状态。该数据位于服务器返回的 json,但现在我可以自定义项目元素来显示它吗?
按原样在 qooxdoo 中使用 qx.ui.form.ListItem by default. You can override this by the createItem
in your list delegate.
来自 demobrowser 的 This example 展示了如何将委托与 createItem
和 bindItem
.
一起使用
如果您对列表项的外观有真正的自定义想法,您需要做的是:
- 创建自定义 ListItem class 实现
qx.ui.form.IModel
(可能包括 qx.ui.form.MModelProperty
)。使用属性和子控件。也许从 qx.ui.form.ListItem
继承并覆盖 layout/child 控件是一个好的开始,但您也可以从 qx.ui.core.Widget
继承 - 需要注意 states,等等
- 使用主题机制设计您想要的样式。
- 使用
setDelegate()
覆盖 createItem
并使用 bindItem
将所需的模型属性连接到您的自定义列表项。
由于问题没有进一步深入,这可能会给你一个起点。
你看,其实我有一个虚拟列表小部件:
var list = new qx.ui.list.List().set({labelPath: "label"});
所以我使用 Json 存储从服务器检索数据:
var store = new qx.data.store.Json('my/resource/data.json');
store.bind("model", list, "model");
这行得通。但我需要更丰富的列表元素,不仅仅是一个图标,还有一些描述和状态。该数据位于服务器返回的 json,但现在我可以自定义项目元素来显示它吗?
按原样在 qooxdoo 中使用 qx.ui.form.ListItem by default. You can override this by the createItem
in your list delegate.
This example 展示了如何将委托与 createItem
和 bindItem
.
如果您对列表项的外观有真正的自定义想法,您需要做的是:
- 创建自定义 ListItem class 实现
qx.ui.form.IModel
(可能包括qx.ui.form.MModelProperty
)。使用属性和子控件。也许从qx.ui.form.ListItem
继承并覆盖 layout/child 控件是一个好的开始,但您也可以从qx.ui.core.Widget
继承 - 需要注意 states,等等 - 使用主题机制设计您想要的样式。
- 使用
setDelegate()
覆盖createItem
并使用bindItem
将所需的模型属性连接到您的自定义列表项。
由于问题没有进一步深入,这可能会给你一个起点。