假设我要在列表视图的项目中使用以下布局:
<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结合使用的最佳方法是什么?
最佳答案
我喜欢这样做的方法是,使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());