我已经尝试了http://agateau.com/2016/reordering-a-listview-via-dragndrop-3/中描述的方法来实现listview中的拖放支持。 但是,当列表中的项目数量增加时,在拖动时滚动会出现问题。
要重现此问题,请从https://github.com/agateau/listviewdragitem/tree/3-placeholders下载项目。将列表中的项目数量增加三倍,并尝试将项目(除了第一项之外的所有项目)拖动到列表的末尾。当列表滚动一段时间后,拖动的tem将消失。我没有发现任何发出的信号表明阻力已经完成。
出于某种原因,第一项可以正确移动。
您是否有任何可能导致此行为的建议?
答案 0 :(得分:4)
第一个Item
没有消失的原因是currentItem
被保护以免被删除。
其他Item
突然消失的原因是ListView
实例化并销毁Item
s,因为它认为它们是可见的。这意味着:因为它们在原始位置上可见。
将currentIndex
设置为正在拖动的Item
的索引,以防止其被销毁。
此外,您可以使用DelegateModel
并将相关Item
添加到持久群组,以防止破坏。