1

当我尝试为从数据模型中删除项目设置动画时,该项目被删除,但显然因为我使用的动画将项目的尺寸设置为 0,添加到数据模型的下一个项目不可见。要查看它,我必须重新加载整个数据模型,或者关闭并重新打开我的应用程序。如果我不制作动画,则会正确删除和添加项目,而不是我想要达到的效果。我的示例代码如下:

ListView {
dataModel: GroupDataModel {
    id: noteDataModel
}

listItemComponents: [
            ListItemComponent {
                type: "item"
                StandardListItem {
                    id: noteItem
                    title: ListItemData.noteTitle
                    description: ListItemData.noteText 
                    animations: [
                        ScaleTransition {
                            id: deleteAnimation
                            toY: 0
                            toX: 0
                            duration: 500
                            onEnded: {          
                              noteItem.ListItem.view.dataModel.remove(noteItem.ListItem.view.dataModel.data(noteItem.ListItem.indexPath));
                            }
                        }
                    ]
                contextActions: [
                        ActionSet {
                            DeleteActionItem {
                                onTriggered: {
                                    deleteAnimation.play();
                                }
                            }
                        }
                    ]
}
4

1 回答 1

3

出现问题的原因是 Cascades 框架有时会重用对象以获得更好的性能。当您从数据模型中移除一个项目并将其维度设置为零时,该对象会在内存中保留一段时间,维度属性设置为 0。您添加的下一个项目将重用已移除的项目对象,但具有维度为 0,所以它不可见。

要解决此问题,请更改动画的 onEnded 事件并在移除后将项目重新缩放回 1.0 的尺寸:

onEnded: {
     noteItem.ListItem.view.dataModel.remove(noteItem.ListItem.view.dataModel.data(noteItem.ListItem.indexPath));
     noteItem.scaleX = 1.0;
     noteItem.scaleY = 1.0;
}
于 2013-11-02T12:40:24.357 回答