切勿在 appcelerator 中使用自定义 ListView 进行成像

Never image with a custom ListView in appcelerator

我正在使用 appcelerator 构建一个应用程序,该应用程序显示带有自定义模板的 ListView。 所以这是我的 xml 文件的代码:

<ListView id="elementsList" defaultItemTemplate="elementTemplate">
            <Templates>
                <ItemTemplate name="elementTemplate" class="itemTemplate">

                    <View id="atomProperties">
                        <Label bindId="name" id="name" />
                        <View id="secondLine">
                            <Label class="line2 fieldLabel" text="from: " />
                            <Label class="line2" bindId="dateStart" id="dateStart" />
                            <Label class="line2 fieldLabel" text=" to: " />
                            <Label class="line2" bindId="dateEnd" id="dateEnd" />
                        </View>
                        <Label bindId="quantity" id="quantity" left="0"/>
                    </View>
                </ItemTemplate>
            </Templates>
            <ListSection>               
                <ListItem quantity:text="10 minute" quantity:color="#090"  name:text="Hydrogen" dateStart:text="10-10-2016" dateEnd:text="10-12-2016"/>
                <ListItem quantity:text="15 minute" quantity:color="#090" name:text="Helium" dateStart:text="02-01-2015" dateEnd:text="10-10-2019"/>
                <ListItem quantity:text="25 minute" quantity:color="#090" name:text="Lithium" dateStart:text="01-01-2001" dateEnd:text="01-01-2018"/>
                <ListItem quantity:text="10 minute" quantity:color="#090"  name:text="Hydrogen" dateStart:text="10-10-2016" dateEnd:text="10-12-2016"/>
                <ListItem quantity:text="15 minute" quantity:color="#090" name:text="Helium" dateStart:text="02-01-2015" dateEnd:text="10-10-2019"/>
                <ListItem quantity:text="25 minute" quantity:color="#090" name:text="Lithium" dateStart:text="01-01-2001" dateEnd:text="01-01-2018"/>
            </ListSection>
        </ListView> 

这是我的 tss 文件的一部分:

"ListItem": {
    accessoryType: Titanium.UI.LIST_ACCESSORY_TYPE_DISCLOSURE
}

因此,如果我尝试启动我的应用程序,我会看到:

这没关系。 现在我想用数据库中的数据设置一个 ListSection。

所以我从我的 xml 文件中删除了这段代码:

<ListItem quantity:text="10 minute" quantity:color="#090"  name:text="Hydrogen" dateStart:text="10-10-2016" dateEnd:text="10-12-2016"/>
                <ListItem quantity:text="15 minute" quantity:color="#090" name:text="Helium" dateStart:text="02-01-2015" dateEnd:text="10-10-2019"/>
                <ListItem quantity:text="25 minute" quantity:color="#090" name:text="Lithium" dateStart:text="01-01-2001" dateEnd:text="01-01-2018"/>
                <ListItem quantity:text="10 minute" quantity:color="#090"  name:text="Hydrogen" dateStart:text="10-10-2016" dateEnd:text="10-12-2016"/>
                <ListItem quantity:text="15 minute" quantity:color="#090" name:text="Helium" dateStart:text="02-01-2015" dateEnd:text="10-10-2019"/>
                <ListItem quantity:text="25 minute" quantity:color="#090" name:text="Lithium" dateStart:text="01-01-2001" dateEnd:text="01-01-2018"/>

从我的 controller.js 我正在构建这段代码:

function populateTable(){
    var collection = Alloy.createCollection("SocialHistoryDAO");
    collection.fetch();
    collection.forEach(function(e, i, a) {
        items.push({                    
            dateStart : {text : e.get("DateStart")}, 
        name : {text : e.get("DisplayName")},
        dateEnd : {text : e.get("DateEnd")}, 
        quantity : {color:"#090", text : e.get("Quantity")+" "+e.get("UnityMeasure")}               
        }); 
    });
    $.elementsList.sections[0].setItems(items);

}

如果我尝试启动我的应用程序,我会在每个项目的右侧看到一个列表视图,而不是符号“>”。

我该如何解决?

您的代码中不再有 ListItem,因此向其添加样式当然不起作用。

但是,您可以只设置模板的样式。所以更改标识符,它应该可以工作

".itemTemplate": {
    accessoryType: Titanium.UI.LIST_ACCESSORY_TYPE_DISCLOSURE
}