如何改进VirtualList中的列表项

时间:2016-11-03 23:33:42

标签: javascript qooxdoo

你看,实际上我有一个虚拟列表小部件:

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,但现在我可以自定义项目元素来显示它吗?

1 个答案:

答案 0 :(得分:2)

默认情况下, qooxdoo 中的列表使用qx.ui.form.ListItem。您可以通过列表delegate中的createItem覆盖此内容。

来自demobrowser的

This example显示了如何将代理与createItembindItem一起使用。

如果您有关于列表项目外观的真实自定义想法,您需要做的是:

  • 创建一个实现qx.ui.form.IModel的自定义 ListItem 类(可能包含qx.ui.form.MModelProperty)。利用属性和子控件。也许它是从qx.ui.form.ListItem继承并覆盖布局/子控件的良好开端,但您也可以继承qx.ui.core.Widget - 需要关注状态等等。
  • 使用主题机制来设置样式。
  • 使用setDelegate()覆盖createItembindItem,将所需的模型属性连接到自定义列表项。

由于问题没有进一步详细说明,这可能会给你一个起点。