在Listview Blackberry10中替换虚拟图像

时间:2013-07-29 11:04:33

标签: listview qml blackberry-10 blackberry-cascades

请帮助我。

我在QML文件中创建了一个ListView,并用从webservice收到的数据填充它。由于这个Web服务没有提供任何图像,我必须在那个地方放置一个虚拟图像。然后我用另一种方法从url中获取图像。现在我在cpp文件中得到了图像。但是我无法更新我的列表视图。我尝试了很多方法。但是失败了。 这是我的代码段。

      ListView {
            id: listView
            objectName: "listView"

            dataModel: ArrayDataModel {
                id: myListModel

            }


            // Override default GroupDataModel::itemType() behaviour, which is to return item type "header"
            listItemComponents: ListItemComponent {
                id: listcomponent
                // StandardListItem is a convivience component for lists with default cascades look and feel
                StandardListItem {
                    id: stdlst
                    title: ListItemData.postText
                    description: ListItemData.postDate
                    status: ListItemData.filePath
                    imageSource: assets:///image.png
                }

            }
            layoutProperties: StackLayoutProperties {
                spaceQuota: 1.0
            }
            horizontalAlignment: HorizontalAlignment.Fill
            verticalAlignment: VerticalAlignment.Fill

        }

我需要将此列表视图中的imagSource替换为其他图像。我该怎么做..?

1 个答案:

答案 0 :(得分:0)

您需要做的是:不应影响assets:///image.png StandardListItem,而应影响ListItemData的属性,默认情况下会将其初始化为assets:///image.png。完成后,当您获取图像时,只需修改数据项的属性即可。

假设您显示的课程名为DataElement

    class DataElement: public QObject {

        Q_OBJECT

        Q_PROPERTY(QString postText READ getPostText CONSTANT);
        Q_PROPERTY(QVariant image READ getImage WRITE setImage NOTIFY imageChanged);
        // Other properties here...

    public:
        DataElement() {
            _postText = "Default text";
            _image = QVariant::fromValue
                (bb::cascades::Image(QUrl("file://" + QDir::homePath() + "/image.png")));
        }

        QVariant image() const {
            return _image;
        }

        void setImage(QVariant image) {
            if (image != _image) {
                _image = image;
                emit imageChanged();
            }
        }

        // Missing methods for other properties etc

    signals:
        void imageChanged();

    private:
        QString     _postText;
        QVariant    _image;
    };

您的ListItem将如下所示:

    StandardListItem {
        id: stdlst
        title: ListItemData.postText
        description: ListItemData.postDate
        status: ListItemData.filePath
        image: ListItemData.image
    }

现在,当您加载图片时,请在setImage上用DataElement调用{{1}},并相应地刷新视图。