如何使用ArrayDataModel将数据正确加载到Picker中? (黑莓OS 10 Cascades)

时间:2013-08-20 19:41:59

标签: qml blackberry-10 blackberry-cascades

我正在使用Blackberry 10 Cascades,我正在尝试使用ArrayDataModel将数据加载到选择器中。我在网上阅读的所有文档都给了我与XMLDataSource一起使用的示例,但是由于我的数据是JSON并来自实时源,我宁愿不必将其序列化为XML的性能影响。加载到XMLDataSource(从我粗略的调查看起来似乎很不稳定)。

我有一些代码可以提供部分功能(正确的行数和列数),但是在尝试访问pickerItemData属性时,结果始终未定义。

以下代码显示了部分功能,它改编自http://developer.blackberry.com/native/reference/cascades/bb_cascades_picker.html

控制台有一些调试输出,内容为

Picker: incorrect model, wrong columns number:  0 

不幸的是,这对我没有任何意义,因为Picker正在呈现正确的列数。似乎没有关于错误消息的任何文档。

import bb.cascades 1.2

Page {
    Container {
        leftPadding: 24.0
        rightPadding: 24.0
        topPadding: 12.0
        bottomPadding: 12.0
        controls: [
            Picker {
                id: picker
                title: "Picker title"
                expanded: true
                rootIndexPath: []
                dataModel: ArrayDataModel {
                    id: dataModel
                }

                pickerItemComponents: [
                    PickerItemComponent {
                        type: "item1"

                        content: Container {
                            background: Color.create(pickerItemData.background)
                        }
                    },
                    PickerItemComponent {
                        type: "item2"

                        content: Container {
                            Label {
                                text: pickerItemData.text
                                textStyle.color: Color.create(pickerItemData.color)
                            }
                        }
                    }
                ]

                onCreationCompleted: {
                    dataModel.append([
                            {
                                "item1": [ {
                                        "background": "#ff0000ff"
                                    }, {
                                        "background": "#ff00ff00"
                                    },
                                    {
                                        "background": "#ffff0000"
                                    }, {
                                        "background": "#ff00ffff"
                                    } ]
                            },
                            {
                                "item2": [
                                    {
                                        "text": "Item 1",
                                        "color": "#ff888888"
                                    },
                                    {
                                        "text": "Item 2",
                                        "color": "#ff0000ff"
                                    },
                                    {
                                        "text": "Item 3",
                                        "color": "#ff00ff00"
                                    },
                                    {
                                        "text": "Item 4",
                                        "color": "#ff00ffff"
                                    },
                                    {
                                        "text": "Item 5",
                                        "color": "#ffff0000"
                                    },
                                    {
                                        "text": "Item 6",
                                        "color": "#ffff00ff"
                                    },
                                    {
                                        "text": "Item 7",
                                        "color": "#ffffff00"
                                    },
                                    {
                                        "text": "Item 8",
                                        "color": "#ffffffff"
                                    } ]
                            } ]);
                }

                onSelectedValueChanged: {
                    var index0 = picker.selectedIndex(0);
                    var index1 = picker.selectedIndex(1);
                    console.log("Selection: " + index0 + ", " + index1);
                }
            }
        ]
    }
}

通过JSON提供的数据结构与XMLDataSource提供的数据结构相同。任何有关此问题的帮助或见解将不胜感激。

0 个答案:

没有答案