【发布时间】:2015-02-17 22:48:21
【问题描述】:
简介:
我正在开发列表视图的拖放功能。我被困在最后一步 -> 用户完成拖放后重新排列 多个 选定的项目。
问题:
你能解释一下实现项目重排的算法吗?
用户释放鼠标后,我有点击项目的索引。我有拖动项目的索引及其计数。伪代码也是可以接受的,但请注意我可能有后续问题。
注意:
针对声称我的原始问题未寻求用户友好实施的 cmets,已对这篇文章进行了编辑。
关键是要实现标准的拖放行为,而我最初提出问题的原因是我缺乏该主题的经验。
如果需要进一步说明,我会更新我的帖子。
问候。
【问题讨论】:
-
发布顺序不应该是 1,5,6,2,3,4 - 而不是 1,6,5,2,3,4 就像在您的绘画示例中那样吗?跨度>
-
不,它应该是 1,6,5.... 用户试图将 {2,3,4} 与 6 交换,并将 5 留在原处。
-
你说你让它在选定的项目需要交换时工作?你是怎么做到的?
-
明白了,但我必须承认这是一个非常不直观的用户体验。当您在大多数 UI 中执行此类操作时,您希望所选块移动到新位置,而不是将恰好在那里的底层对象移回您选择的位置。如果您选择的项目之间有间隙怎么办?这会变得很尴尬。
-
无论如何,我看不出问题只是创建一个新数组,将所有项目按正确的顺序放在那里,然后修改您的 ListView。它比涵盖此类操作的所有最终情况的任何交换代码都要干净得多。