我有一个自定义listitemcomponent列表视图,显示名称列表,当我在名称上滑动它显示用户全名和个人资料图片时,为了实现这一点,我创建了2个视图(视图1 - 只有名称(初始)在我的自定义listitemcomponent中显示视图),用图片和全名查看2-,我通过它根据滑动操作隐藏视图,它工作正常。现在,当我点击任何名称时,名称应该返回顶部,其余部分保持原样,为了实现这一点,我保留了一个数组,使更新的列表按顺序排列,所以每当我点击名称时,它就会清除数据模型,从更新的数组添加项目,它也可以工作,但问题是,当我刷几个名称时,一些行将有视图1,一些行将有视图2,那时我执行单击操作列表重新订单很好,但视图2的行包含与以前相同的值,我必须来回刷卡以刷新此行。
例如说我的视图中有4个名字显示为,
1
2
3
4
我已经刷了2和3所以现在listview显示 -
1
第2行详细信息
第3行详细信息
4
点击4后,列表显示 -
4
第2行详细信息//swiping here shows correct value 1 and swipe back shows row 1 detail
第3行详细信息
3
无论如何更新自定义listitemcomponent还是可以在删除行时删除它的实例,并在添加时再次重新创建。下面是我的列表视图的示例结构。我需要它来支持10.0及以上的
ListView {
id: contactListView
dataModel: contactsData
listItemComponents: [
ListItemComponent {
id: homeListComponent
type: "item"
CustomListItemHomePage { //This is my custom listitem that has two views
id: listCell
onClicked:{
var newContacts = new Array();
newContacts.push(ListItemData.name);
for (var i = 0; i < listCell.ListItem.view.dataModel.size(); i ++)
{
if(listCell.ListItem.view.dataModel.data([ i ]).name!=ListItemData.name)
{
newContacts.push(listCell.ListItem.view.dataModel.data([ i ]).name);
}
}
listCell.ListItem.view.dataModel.clear();
for (var cntNames in newContacts) {
listCell.ListItem.view.dataModel.insert({
name: newContacts[cntNames].toString(),
last: listCell.ListItem.view.dataModel.size(),
})
}
}
}
}]
}
答案 0 :(得分:1)
在CustomListItemHomePage上,添加以下代码行:
function init(){
ListItemData;//This is your new data to (re)init your cell as you wish
}
ListItem.onDataChanged: {
init();//RE-init the cell when data is refreshed after recycling
}
onCreationCompleted: {
init();//Init the cell for the first time
}