如何在黑莓 10 级联 qml 中获取列表视图行数?

Posted

技术标签:

【中文标题】如何在黑莓 10 级联 qml 中获取列表视图行数?【英文标题】:How to get the list view row count in blackberry 10 cascades qml? 【发布时间】:2013-01-03 09:22:30 【问题描述】:

我需要获取列表视图 blackberry 10 cascades qml 中的行数?列表视图数据源模型类型为json。这个我试过了

ListItem.initialized ? ListItem.view.dataModel.childCount(ListItem.indexPath) : 0

但即使列表视图行数超过1,它也只显示0。

我的代码

dataModel: groupdatamodel 
listItemComponents: [ 
    ListItemComponent  
        type: "header" 

        Container  
            preferredWidth: 748 
            layout: DockLayout  

            Label 
                text: "Title" 
                base: SystemDefaults.TextStyles.TitleText
                fontWeight: FontWeight.Bold
            
        

        Label  
            id: subtitle 
            text: groupdatamodel.size() + "Items"

            textStyle  
                base: SystemDefaults.TextStyles.SmallText 
                fontWeight: FontWeight.Bold
         
    
]

【问题讨论】:

我可以给你一个提示:不要使用“+”运算符来连接字符串——你会得到错误的输出——非常奇怪。这样做: QString("%1").arg(number);只是一个旁注:) 【参考方案1】:

    Main.qml

    import bb.cascades 1.0
    import bb.data 1.0
    
    Page 
        content: Container 
            Label 
                text: "List View with json parsing"
            
            ListView 
                id: listViewDemo
                dataModel: GroupDataModel 
                    grouping: ItemGrouping.None
                
                listItemComponents: [
                    ListItemComponent 
                        type: "listItem"
                        StandardListItem 
                            title: ListItemData.ThumnailImage
                            description: ListItemData.CategoryID
                        
                    
                ]
                function itemType(data, indexPath) 
                    return "listItem";
                
            
        
        attachedObjects: [
            DataSource 
                id: serviceDataSource
                source: "contacts.json"
                type: DataSourceType.Json
                onDataLoaded: 
                    listViewDemo.dataModel.clear();
                    listViewDemo.dataModel.insertList(data)
                
            
        ]
        onCreationCompleted: 
            serviceDataSource.load();
        
    
    

    Contacts.json

    [   "CategoryID":"3","CategoryName":"News","CountryID":"1","Result":"OK",
    

    "CategoryID":"4","CategoryName":"Daily Paper","CountryID":"1","Result":"OK","CategoryID":"5","CategoryName":"Thanthi","CountryID":"1","Result":"OK", "CategoryID":"1","CategoryName":"Newspaper","CountryID":"1","Result":"OK", "CategoryID":"2","CategoryName":"Magazine","CountryID":"1","Result":"OK" ]

    main.cpp

在主文件中添加以下行

#include <bb/data/DataSource>
#include <bb/data/JsonDataAccess>

Q_DECL_EXPORT int main(int argc, char **argv)

    // We want to use DataSource in QML
    bb::data::DataSource::registerQmlTypes();

4.FILENAME.PRO

LIBS += -lbbdata

【讨论】:

【参考方案2】:

DataModel::childCount(ListItem indexPath) 返回由 indexPath 指定的列表中项目的子项计数,而不是数据模型中数据项的计数(因此可用于列表)。您需要询问实际的数据模型。例如 GroupDataModel::size() 返回 GroupDataModel 中的项目数,与 QListDataModel 类似。

【讨论】:

感谢您的回复,它在按钮单击事件中工作正常,但在 listview 中没有。这里我粘贴了我所做的代码 dataModel: groupdatamodel listItemComponents: [ ListItemComponent type: "header" Container 首选宽度:748 布局:DockLayout 标签文本:“标题”基础:SystemDefaults.TextStyles。 fontWeight: FontWeight.Bold Label id:subtitle text: groupdatamodel.size()+"Items" textStylebase:SystemDefaults.TextStyles.SmallText fontWeight: FontWeight.Bold 请编辑您的问题并发布格式正确的代码,如果您希望有人查看它。【参考方案3】:

我在我的项目中使用了这段代码,它运行良好:

 console.log("pcs count" + pcsListModel.childCount(0));

【讨论】:

【参考方案4】:

除非您使用自定义数据模型,否则无法在标签中添加自定义元素。

【讨论】:

【参考方案5】:

你可以使用:

your_groupdatamodel.size().toString();

your_groupdatamodel.childCount(0);

javascript 代码中。

J.

【讨论】:

以上是关于如何在黑莓 10 级联 qml 中获取列表视图行数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在黑莓中使用经度和纬度获取当前地址

触发器上的黑莓 10 级联

如何在黑莓中实现搜索功能?

在黑莓中通过 GPS 获取坐标

如何从黑莓10级联中的复选框选定项目中获取值..?

如何在黑莓应用程序中制作超链接?