1

假设我想在列表视图的项目中使用以下布局:

<TablePane styles = "{padding : 5, horizontalSpacing : 5, verticalSpacing : 5}" >
    <columns>
        <TablePane.Column width = "1*"/>
        <TablePane.Column width = "21"/>
    </columns>

    <TablePane.Row height="-1">
        <TextInput bxml:id ="txtName" 
                   textSize="15" />
        <TablePane.Filler/>
    </TablePane.Row>

    <TablePane.Row height="-1">
        <TablePane.Filler/>
        <ActivityIndicator active="true" width="16" height="16"/>
    </TablePane.Row>
</TablePane>

并说我有以下自定义 ItemRenderer:

public class CustomListRenderer extends TablePane
                                implements ListView.ItemRenderer {
    // stuff here
}

将上面的 BXML 片段与我的自定义 ListRenderer 一起使用的最佳方式是什么?

4

1 回答 1

0

我喜欢这样做的方法是使 CustomListRenderer 成为您可能称之为类似名称 bxml 文件的“代码隐藏”,并向其添加工厂方法以通过调用 bxml 序列化程序来创建自身。像这样的东西:

public class CustomListRenderer extends TablePane
                                implements ListView.ItemRenderer {
    public static CustomListRenderer create() throws IOException, SerializationException {
    BXMLSerializer bxmlSerializer = new BXMLSerializer();
    return (CustomListRenderer) bxmlSerializer.readObject(CustomListRenderer.class, "CustomListRenderer.bxml");
    }

    // rest of your stuff here
}

然后将上面的代码段放入 CustomListRenderer.bxml,但将根项更改为 CustomListRenderer:

<my:CustomListRenderer styles = "{padding : 5, horizontalSpacing : 5, verticalSpacing : 5}" 
  xmlns:bxml="http://pivot.apache.org/bxml"
  xmlns:my="your.java.package.here"
  xmlns="org.apache.pivot.wtk">
  ... rest of your bxml here ...

最后,当您创建想要使用您的自定义渲染器的 ListView 时,您可以这样做

listview.setItemRenderer(CustomListRenderer.create());
于 2011-11-17T02:25:46.420 回答