我正在寻找一个 ListPreference,用户可以在其中更改列表中项目的顺序。这些项目将是可拖动的,并且可以由用户重新排序。
我在 QuickPanel 的自定义 ROM 中看到了这个(我几乎可以肯定我在 Cyanogenmod 中看到过)。这是一个屏幕截图,可以帮助您理解这个想法:
我知道如何制作自定义 ListView 项目并设置图标以指示这些项目是可拖动的,但我不知道如何使它们可拖动,并相应地更改顺序。至于将它们保存在首选项中,我发现这很容易实现。
PS:我知道 Cyanogenmod 是开源的,但我找不到这个特定东西的来源 :( 我能得到的最接近的是这个,它应该在另一个屏幕附近的某个地方......
在此先感谢您提供有关此问题的任何提示。
更新:我最终使用了已接受答案中的文件,并进行了添加和修改。我在这里列出它们以供进一步参考。
使用一个自定义的Adapter(我这里是ArrayAdapter),来实现这个item可拖动的视觉反馈,就是TextView附近的一个ImageView。这是可选的。
设置 DragListener 和 RemoveListener 以相应地更新列表。ListView 不会自动执行此操作。这取决于您使用的适配器。
有一行将 View 投射到 ViewGroup,它出现了一些错误,所以我删除了投射没有任何问题,不需要它。(在 onInterceptTouchEvent 方法中)。
TouchInterceptor
mRemoveMode = 1;
的构造函数中的更改,或以下之一:FLING = 0; SLIDE = 1; TRASH = 2;
。我认为对于TRASH
,资源也应该可用。
实际上,我不是从答案的链接中获取文件,而是从我已经拥有的 Cyanogenmod 获取文件,但我猜这些文件是相同的。
这些是项目中的实际文件(在 r12,在撰写本文时):
我希望它可以帮助别人:)