替换 Listview Blackberry 10 中的虚拟图像
Posted
技术标签:
【中文标题】替换 Listview Blackberry 10 中的虚拟图像【英文标题】:To replace a dummy image in Listview Blackberry10 【发布时间】:2013-07-29 11:04:32 【问题描述】:请帮帮我。
我在 QML 文件中创建了一个 ListView,并用从 web 服务接收到的数据填充它。由于这个 web 服务不提供任何图像,我必须在那个地方放置一个虚拟图像。然后我使用另一种方法从 url 获取图像。现在我在我的 cpp 文件中获取了图像。但我无法更新我的列表视图。我尝试了很多方法。但失败了。 这是我的代码 sn-p。
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】:你需要做的是:你应该影响ListItemData
的一个属性,而不是影响assets:///image.png
到你的StandardListItem
,你默认初始化为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
现在,当您加载图像时,您可以在DataElement
上调用setImage
,并相应地刷新视图。
【讨论】:
在上面的代码中,我正在填充来自 web 服务调用的 postText、postDate 和 filePath。但是由于这个 web 服务不提供任何图像,我只是在这个位置放了一个虚拟图像。我只能在调用另一个 web 服务后获取图像。获得图像 QVariant 后,我需要在 StandardListItem 的图像部分进行设置。那么是否可以像这样更新图像..?StandardListItem
也有一个 image
属性。您需要将此属性绑定到您的自定义属性之一(如postText
、postDate
和filePath
)。如您所料,它应该是QVariant
类型。在获得第二次调用 Web 服务的结果之前,您需要将自定义属性值设置为虚拟图像,然后在收到真实图像时替换它。
感谢您的回复...能否提供一个示例代码...?
如何将图像属性绑定到自定义属性...?请帮帮我...:(以上是关于替换 Listview Blackberry 10 中的虚拟图像的主要内容,如果未能解决你的问题,请参考以下文章
BlackBerry Cascades:如何将数据加载到 ListView
Phonegap:如何将插件(如FileSystem)添加到blackberry10?
如何使用 webworks 在 Blackberry 10 设备中获取 IMEI 号码?