在一些允许用户自定义栏目顺序的app(如:凤凰新闻、网易云音乐等),我们可以方便地拖拽列表项来完成列表的重新排序,进而完成对栏目顺序的重排。这个功能很人性化,而实现起来其实很简单(甚至都不用写什么后台代码),只有三步。

①把冰箱门打开

首先,我们需要让冰箱的大门敞开,也就是允许我们进行拖拽的相关操作。以ListView为例,注意下面几个属性。

AllowDrop="True"

CanReorderItems="True"

IsSwipeEnabled="True">

Show Items

AllowDrop属性允许元素进行拖动,它继承自UIElement基类,为所有可视元素支持。

CanReorderItems属性继承自ListViewBase基类,允许列表控件的项可以重新排序。

IsSwipeEnabled属性(swipe有“轻扫”之意)也需要设置为“True”,否则在触摸屏等输入设备下无法进行操作。相关的详尽说明在MSDN文档里有介绍(https://docs.microsoft.com/en-us/uwp/api/Windows.UI.Xaml.Controls.ListViewBase),此部分摘录部分原文:

Remarks

Setting IsSwipeEnabled to false disables some default touch interactions, so it should be set to true when these interactions are needed. For example:

If item selection is enabled and you set IsSwipeEnabled to false, a user can deselect items by right-clicking with the mouse, but can't deselect an item with touch by using a swipe gesture.

If you set CanDragItems to true and IsSwipeEnabled to false, a user can drag items with the mouse, but not with touch.

If you set CanReorderItems to true and IsSwipeEnabled to false, a user can reorder items with the mouse, but not with touch.

You typically set IsSwipeEnabled to false to disable swipe animations when items in the view don't support interactions that use the swipe gesture, like deselecting, dragging, and reordering. Disabling the animation when it's not needed can improve the performance of your app.

(有趣的是最后一段:当列表不允许轻扫手势(撤销选定,拖动,拖拽重排)时,我们可以“显式”地将IsSwipeEnabled属性设置为False来提升应用的性能。)

②把大象装进去

前台ok后,我们就可以在后台加点东西,把我们的排序逻辑(其实并没有,微软已经写好了)添加进去。这个demo里,我用了一个按钮和一个文本框来观察重排的结果。如下:

public sealed partial class MainPage : Page

{

public MainPage()

{

this.InitializeComponent();

for (int i = 0; i < 10; i++)

{

list.Items.Add($"-----THIS IS ITEM {i}-----");

}

}

private void Button_Click(object sender, RoutedEventArgs e)

{

txt.Text = string.Empty;

foreach (var item in list.Items)

{

txt.Text += item.ToString()[18] + " ";

}

}

}

这样,重新排序后,点击按钮,我们即可观察到结果了。

③把冰箱门关上

把大象(?)装进去之后,最后就是我们的收尾工作了。显然,刚才的列表只是一个中间的载体,是我们待排序栏目的简单显示。一般而言,这个listview会安置在contentdialog或是popup里,那么怎么在重排后立即让父页面上的栏目得到相应,进行重排呢?我们用个预定义的委托即可,加在刚才的后台代码里(冰箱能装的东西其实挺多的)。

public Action action;

然后在父页面注册方法,比如:

btn.Click += async (s, e) =>

{

var dialog = new Dialogs.Sort();

dialog.action += async () => { await sortagain(); };

await dialog.ShowAsync();

};

以上所述是小编给大家介绍的Java实现拖拽列表项的排序功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对聚米学院网站的支持!

java实现拖动排序功能_Java实现拖拽列表项的排序功能相关推荐

  1. 【UWP】拖拽列表项的排序功能实现

    在一些允许用户自定义栏目顺序的app(如:凤凰新闻.网易云音乐等),我们可以方便地拖拽列表项来完成列表的重新排序,进而完成对栏目顺序的重排.这个功能很人性化,而实现起来其实很简单(甚至都不用写什么后台 ...

  2. dropzone java实例_Java实现拖拽文件上传dropzone.js的简单使用示例代码

    Java实习生一枚,前端知识薄弱,最近因为工作需要,做了一个拖拽文件上传的功能,发现dropzone.js挺不错的,特地做个笔记. 自己写的拖拽文件至一个按钮上传的功能,前端及java代码如下: js ...

  3. MovieClip实现拖拽等移动位置的功能

    今天我已经实现了对加载的MovieClip移动位置的功能,包括上.下.左.右移动功能.充满容器功能.1:1还原初始位置功能和鼠标拖拽移动功能.但是,移动位置的功能总体上仍旧存在一个问题:无法控制垂直滚 ...

  4. java 拖拽生成_JAVA UI 拖拽功能

    java GUI拖拽功能是很实用也相对高级一些的功能. 有一小部分的GUI控件支持 他们有dragEnabled属性.这些JComponent包括: javax.swing.JColorChooser ...

  5. android gridview拖动排序,Asp.net GridView 拖拽排序    原创(欢迎拍砖,敬请嘴下留情!)...

    原理:客户端排序(或者说组织新的排序顺序),Ajax 更新服务器端数据. 客户端用jquery插件sortable实现拖拽排序,保存之前检索顺序变化了的数据,并组织成Json数据,用AJax传送到服务 ...

  6. java 拖动图片放大_Android 图片拖拽、放大缩小的自定义控件

    需求:像相册中的图片跟随手指拖动,双指的放大和缩小,相册中拖出范围之后有弹回的动画,感觉上很圆润,很舒服,我写的例子中并没有加动画 思路:1.自定义DragImageView.java 2.自定义中先 ...

  7. java ee打印功能_Java EE 8的前5个新功能

    java ee打印功能 备受期待的Java Enterprise Edition 8版本具有两个令人兴奋的新API(JSON绑定1.0和Java EE Security 1.0),并且对当前API进行 ...

  8. java 排序 内存_Java内存模型(二)——重排序

    一.重排序 重排序是指为了提高程序的执行效率,编译器和处理器常常会对语句的执行顺序或者指令的执行顺序进行重排. 编译器优化的重排序:编译器在不改变单线程程序语义的前提下,可以重新安排语句的执行顺序. ...

  9. java 优解分班_java设计一个按班级的分组排序,班级 姓名 学号 成绩 ,再输出每个班90分以上的人数,占比多少。...

    展开全部 一.先编排考场 1.首先要做的就是先安排各个班级的每个学生所在的考场,尽量让同一考e69da5e6ba9062616964757a686964616f31333366303762场不能有同班 ...

最新文章

  1. Nginx虚拟主机、Nginx模块的安装使用(加密模块--with-http_ssl_module)
  2. Lock VS Monitor
  3. vim配置vimrc详解
  4. mysql客户端程序介绍
  5. 【Janino】Janino Java表达式计算引擎 案例
  6. 【Linux】后台 nohup 运行 python 程序
  7. 关于xcode中的代码比较工具
  8. 在线就能用的 SQL 练习平台我给你找好了
  9. 修复VC6.0打开菜单项以及添加工程菜单项
  10. 【推荐】中国计算机学会推荐国际学术会议和期刊目录——CCF的会议与期刊分级
  11. Ubuntu20.04无法连接wifi的解决方法
  12. Android视频录制命令screenrecord
  13. 白鹤芋一帆风顺花怎么养 一帆风顺花养殖方法及注意事项
  14. 情人节用Python画玫瑰花
  15. Java自动化测试系列[v1.0.0][TestNG测试开发环境配置]
  16. 基于微信小程序房屋出租民宿预定app设计
  17. 人生观,世界观,价值观树立的方式
  18. maven子模块之间互相引入依赖,pom文件报错
  19. building workspace问题
  20. 根据图片名字获取Drawable对象

热门文章

  1. 华硕路由器共享打印机手记
  2. 【 简化的插入排序 】 本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序
  3. 独立按键控制继电器开关
  4. iOS OC08,09_内存管理
  5. 快速切换本地host文件的工具 —— SwitchHosts
  6. SwitchHosts使用详解 (转)
  7. java基础学习(五)
  8. 文字转载-《 我忍你,一辈子》
  9. linux的地址随机化ASLR,[翻译]Linux (x86) Exploit 开发系列教程之六(绕过ASLR - 第一部分)...
  10. 怎么利用NTFS文件权限打造安全u盘