blackberry cascades qml中未更新ListView
我有一个列表视图,从api调用接收到的数据按顺序排列 一, 二, 三, 四, 五, 在我单击一个项目(比如3)之后,我进行api调用,按照顺序提供数据 三, 一, 二, 四, 五, 我需要展示同样的东西。但是我的列表视图现在像 三, 一, 三, 四, 五, 我检查了显示listview项数据的日志,它以正确的顺序打印blackberry cascades qml中未更新ListView,listview,blackberry,qml,blackberry-10,blackberry-cascades,Listview,Blackberry,Qml,Blackberry 10,Blackberry Cascades,我有一个列表视图,从api调用接收到的数据按顺序排列 一, 二, 三, 四, 五, 在我单击一个项目(比如3)之后,我进行api调用,按照顺序提供数据 三, 一, 二, 四, 五, 我需要展示同样的东西。但是我的列表视图现在像 三, 一, 三, 四, 五, 我检查了显示listview项数据的日志,它以正确的顺序打印 ListView { id: contactListView dataModel: contactsData
ListView {
id: contactListView
dataModel: contactsData
listItemComponents: [
ListItemComponent
{
id: homeListComponent
type: "item"
CustomListItemHomePage
{
id: listCell
background: ListItemData.colors
text: ListItemData.name;
onClicked: {
listCell.ListItem.view.fetchListFromLV();
}
}
}
]
function fetchListFromLV()
{
//some codes that makes the api call here
}
}
attachedObjects: [
GroupDataModel {
id: contactsData
sortingKeys: [ "last" ]
grouping: ItemGrouping.None
},
Communication {
id: requestPost
onComplete: {
//gets the api call response here
var response = JSON.parse(info);
console.log(response);
if (response.hasOwnProperty('contacts'))
{
contactsData.clear();
//contactListView.dataModelChanged(contactsData);
var contacts = response["contacts"];
for (var cntNames in contacts)
{
contactsData.insert({
name: contacts[cntNames].toString(),
last: contactsData.size(),
colors: setBgColor(contactsData.size())
})
}
}
//This log prints data in correct order i.e 3 1 2 4 5 but the data displayed in list view prints in wrong order 3 1 3 4 5
for (var i=0;i<contactsData.size();i++)
{
console.log(contactsData.data([i]).name);
}
}
]
ListView{
id:contactListView
数据模型:contactsData
listItemComponents:[
ListItemComponent
{
id:homeListComponent
类型:“项目”
CustomListItemHomePage
{
id:listCell
背景:ListItemData.colors
text:ListItemData.name;
再次点击:{
listCell.ListItem.view.fetchListFromLV();
}
}
}
]
函数fetchListFromLV()
{
//在这里进行api调用的一些代码
}
}
附件:[
GroupDataModel{
id:contactsData
排序键:[“最后”]
分组:ItemGrouping.None
},
沟通{
id:requestPost
未完成:{
//获取此处的api调用响应
var response=JSON.parse(info);
控制台日志(响应);
if(response.hasOwnProperty('contacts'))
{
contactsData.clear();
//contactListView.dataModelChanged(contactsData);
var触点=响应[“触点”];
for(联系人中的姓名)
{
contactsData.insert({
名称:联系人[cntNames].toString(),
最后:contactsData.size(),
颜色:setBgColor(contactsData.size())
})
}
}
//此日志以正确的顺序打印数据,即3 1 2 4 5,但列表视图中显示的数据以错误的顺序打印3 1 3 4 5
对于(变量i=0;i**请遵循以下代码**
导入bb.cascades 1.2
页面{
一旦创建完成:{
fillGroupDataModel()
}
容器{
列表视图{
id:contactListView
数据模型:contactsData
listItemComponents:[
ListItemComponent{
id:homeListComponent
类型:“项目”
容器{
水平对齐:水平对齐。填充
垂直对齐:垂直对齐。填充
背景:ListItemData.color\u默认值\u bg
容器{
水平对齐:水平对齐。填充
垂直对齐:垂直对齐。中心
加总:10
底部填充:10
左侧填充:10
右侧填充:10
布局:StackLayout{
方向:LayoutOrientation.LeftToRight
}
标签{
id:mLableColorId
text:ListItemData.color\u id
垂直对齐:垂直对齐。中心
}
标签{
id:mLableColorName
text:ListItemData.color\u名称
垂直对齐:垂直对齐。中心
}
}
分隔器{
水平对齐:水平对齐。填充
}
}
}
]
反对:{
var selectedItem=dataModel.data(indexPath);
var selectedColor=selectedItem.color\u代码
var count=contactListView.dataModel.childCount(0)
对于(变量i=0;i**Follow This Code**
import bb.cascades 1.2
Page {
onCreationCompleted: {
fillGroupDataModel()
}
Container {
ListView {
id: contactListView
dataModel: contactsData
listItemComponents: [
ListItemComponent {
id: homeListComponent
type: "item"
Container {
horizontalAlignment: HorizontalAlignment.Fill
verticalAlignment: VerticalAlignment.Fill
background: ListItemData.color_default_bg
Container {
horizontalAlignment: HorizontalAlignment.Fill
verticalAlignment: VerticalAlignment.Center
topPadding: 10
bottomPadding: 10
leftPadding: 10
rightPadding: 10
layout: StackLayout {
orientation: LayoutOrientation.LeftToRight
}
Label {
id: mLableColorId
text: ListItemData.color_id
verticalAlignment: VerticalAlignment.Center
}
Label {
id: mLableColorName
text: ListItemData.color_name
verticalAlignment: VerticalAlignment.Center
}
}
Divider {
horizontalAlignment: HorizontalAlignment.Fill
}
}
}
]
onTriggered: {
var selectedItem = dataModel.data(indexPath);
var selectedColor = selectedItem.color_code
var count = contactListView.dataModel.childCount(0)
for (var i = 0; i < count; i ++) {
var tempImdexPath = [ i ]
var selectedItem = dataModel.data(tempImdexPath);
selectedItem.color_default_bg = selectedColor
contactListView.dataModel.updateItem(tempImdexPath, selectedItem);
}
}
}
}
function fillGroupDataModel() {
contactsData.clear()
contactsData.insert({
"color_id": 1,
"color_code": Color.Blue,
"color_name": "Blue",
"color_default_bg": Color.White
});
contactsData.insert({
"color_id": 2,
"color_code": Color.Green,
"color_name": "Grean",
"color_default_bg": Color.White
});
contactsData.insert({
"color_id": 3,
"color_code": Color.Red,
"color_name": "Red",
"color_default_bg": Color.White
});
contactsData.insert({
"color_id": 4,
"color_code": Color.Gray,
"color_name": "Gray",
"color_default_bg": Color.White
});
contactsData.insert({
"color_id": 5,
"color_code": Color.Cyan,
"color_name": "Cyan",
"color_default_bg": Color.White
});
}
attachedObjects: [
GroupDataModel {
id: contactsData
sortingKeys: [ "color_id" ]
sortedAscending: true
grouping: ItemGrouping.None
}
]
}