【Titanium】dataCollectionを使ったTableViewからListViewへのお引越し

  • 3
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

お引越ししたほうが便利だったので、お引越ししました。

dataCollectionというのはSQliteを使ってテーブルを制作した際に、
そのデータを使って自動的に当てはめてレコードをリストに追加していける素晴らしい機能です。

Alloyフレームワークを使ってアプリ制作しているのですが、この機能をテーブルビューの方で使ってると、セクション分けて別のリストを並べる作業がおもったより面倒だったので、思い切って引越ししました。

前の物件はこんな感じです。

<TableView id="Bookmark" dataCollection="bookmark" dataTransform="transformBookmark" editable="true">
    <TableViewRow   id="tblrBookmark" id="{id}">
        <ImageView id="imgLogo"         image="{logo}"/>
        <Label      id="lblFcName"      text="{name}"></Label>
        <Label      id="lblCatchcopy"   text="{catchcopy}"></Label>
    </TableViewRow>
</TableView>
  • {id}こんな感じで指定するとテーブルの要素そのまま引っ張ってこれます。
  • dataTransformはjsの方に記述してある関数が指定してあります。
function transformBookmark(model) {
    var transform = model.toJSON();
    transform.name = transform.fcName + "\n" + transform.company;
    return transform;
}

こんな感じでxmlで代入できるようにしてあります。

新居は此方。新しくセクションもテンプレートも追加出来るので便利ですね。


<ListView id="Bookmark" defaultItemTemplate="favoriteList" exitOnClose="false" fullscreen="false" onItemclick="openDetail">
    <Templates>
        <ItemTemplate id="tblrBookmark" name="favoriteList">
            <ImageView id="imgLogo"  bindId="imgLogo"/>
            <Label id="lblFcName"    bindId="lblFcName"></Label>
            <Label id="lblCatchcopy" bindId="lblCatchcopy"></Label>
        </ItemTemplate>
    </Templates>

    <ListSection id="bookmark" dataCollection="bookmark" dataTransform="transformBookmark">
        <ListItem template="favoriteList" title="{id}"
                    imgLogo:image ="{logo}"
                    lblFcName:text="{name}"
                    lblCatchcopy:text="{catchcopy}"
                    accessoryType="Ti.UI.LIST_ACCESSORY_TYPE_DISCLOSURE"/>
       </ListSection>
    </ListView>

リストビューは現行バージョン(SDK3.3)でもまだ使いにくい部分は多いですけど、非常に便利ですね。

公式ドキュメントは詳しく書いてあって分かりやすいんですけど、日本語の情報ももっと公開されて欲しいですね(´・ω・`)