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 に答える