列表排序交互方式小结

author author     2023-04-02     226

关键词:

参考技术A

列表作为多个同类型信息的集中,其默认的排序通常是列表项加入的时间,以及某个值的升序降序。在某些追求特定展示效果的场景下,也需要主动去设置某些列表项的位置。在最近的工作中跟列表打交道比较多,因此总结了一下几种列表排序的方式,包括:1.拖拽;2.置顶;3.上/下移动;4.编辑序号。

使用方式:对列表中某项或某几项进行置顶操作
方便性:
局限:
使用场景:用于突出众多列表项中的少数几项,从而首先展示重要信息,或快捷进入常用项目。
置顶的特点在于无论列表内容有多少,可以简单地完成对目标内容的操作,适用于对列表中单个或少数几项进行突出。被置顶的项可以取消置顶,取消置顶后按照列表某人排序规则回到其应处的位置。如QQ聊天列表:

新浪微博的置顶可能是是大家更熟悉的例子,这里就不截图了。

拖拽模拟了物理世界,是最自然的方式,显然它有着高效、灵活的优点,但相比其他排序方式它对视觉设计、开发要求要稍高。要实现流畅的拖拽过程,有以下几点值得注意:
1.1、在静态界面或hover时表现出可拖拽性
也就是所谓UI的affordance,让人一看就知道它是可拖拽的:

1.2、在拖拽过程中表现出可拖拽性
在视觉上需要设计拖拽项、原位置空出、新位置预留的样式,触发和完成拖拽的各项数值也需要详细定义。

1.3、列表项越多,拖拽的优势就越不明显
大家可以回想下在ps中手指压着鼠标、眼睛盯着图层名称去拖动图层的经历,真是一大麻烦。而当列表项多到出现了翻页,就更无法直接实现拖拽。此时,需要新开页面进入能实现拖拽的页面,或者干脆就将列表设计为无限列表,像本地文件那样。
由常规页面进排序页面,如豆瓣相册的拖拽排序:

单次点击实现一个单位的上/下移动,操作简单,适用于对列表局部中的项进行排序,常见于文件创建类工具中的内容管理。如Sketch、Axure:

值得注意的是,上/下移动的操作与单个列表项是分开的,而不是像其伴随着单个列表项。我想,其中一个理由是在这种点击一次移动一个位置的场景中,仅仅点击一次很可能达不到目的。如果操作跟随列表项的移动,那么在多次点击时鼠标需要不断点击 - 移动 - 点击 - 移动……在点击区域不大的情况下,操作起来无疑会比较麻烦。另外,在使用这些工具时,虽然有图层面板,但用户的注意力集中在内容而非内容的列表上,用户可以直接在编辑区选中内容进行编辑,而不用在列表选中再操作。

直接编辑数字编号是最精准的排序方式了,当然操作也更复杂。另外,每次对编辑后页面都需要刷新一次(其他排序方式是这样吗?)。它适用于需要对列表整体排序进行把握、可能对每个列表项的排序都有要求的场景。如豆瓣豆列的排序、虾米精选集的排序:

工作量
从交互设计的角度审视了这几种排序方式之后,也需要考虑实现的问题。尤其是在工期紧张人手不够的情况下,设计方案常常会变为“不太好用但至少能用”的效果。于是我去询问了开发同事实现4种方式时工作量上的比较,得知拖拽排序和编辑序号是会工作量更大些,但差别也不是特别大。
刷新机制
另外一个要与开发沟通好的问题是,列表排序更改后页面的刷新机制。像豆列那样每进行一次编辑页面就要全刷一次,无疑会带来糟糕的体验。

列表排序方式的选择,首先需要考虑排序的需求到底是怎样的,再去综合列表项总数、要排序的项目数总、列表项形式等因素。总的来说,拖拽还是可以胜任大多数的排序场景。本文只是做出简单的总结,列表的形式和使用场景千差万别,还是那句话,具体情况具体分析。

如何在 SwiftUI 中以交互方式按年份过滤日期列表

】如何在SwiftUI中以交互方式按年份过滤日期列表【英文标题】:HowtofilteralistofdatesbyyearinteractivelyinSwiftUI【发布时间】:2020-07-0308:00:03【问题描述】:我有一个来自核心数据实体MyEntity的NSManagedObject子类:@NSManagedpublicvarname:String@NS... 查看详情

第八章学习小结

排序的概念排序的方式:1、插入排序:  直接插入排序:   一一比对  折半插入排序:在已经拍好的序列中插入,适合初始记录无序、n较大的情况  希尔排序:待排序的关键字基本有序->效率较高  &n... 查看详情

第八章学习小结

一、排序的概念:将一系列数据按照某个关键字进行递增或递减的顺序排列起来二、排序的方式:1、插入排序:  直接插入排序:   一一比对  折半插入排序:在已经拍好的序列中插入,适合初始记录无序、n较... 查看详情

第七章学习小结

...找的时间复杂度不一定是log2n,因为需要先对顺序表进行排序,才能满足折半查找的要求。树表的查找中,对二叉排序树的查找,则通过递归的方式查找,因为二叉排序树的特殊存储数值方式,左子树上所有结点的值均小于 查看详情

如何以非交互方式在 Git 中重新排序提交

】如何以非交互方式在Git中重新排序提交【英文标题】:howtore-ordercommitsinGitnon-interactively【发布时间】:2011-06-2605:56:59【问题描述】:什么非交互式git命令实现了从之前到之后的变化?之前:A---B---C---D之后:A---C\'---B\'---D\'【问... 查看详情

第七章学习小结

...内容主要为查找。我们学习了顺序查找、二分查找、二叉排序树、平衡二叉树、B树、B+树。。顺序查找可以通过设置监视哨来减少查找所需的平均时间,免去查找过程中每一步都要检测整个表是否查找完毕。折半查找中需要注意... 查看详情

算法小结(代码片段)

算法的稳定性:当列表中有重复元素时,重复元素的位置是否变化,变化则不稳定。应用:当有第多个关键字时。如:nameageNaruto16Hinata16想要排序,则先按name进行一次排序,然后按age进行一次稳定的排序(如果不稳定,可能会打... 查看详情

python实现对列表中重复元素进行去重的方法小结

参考技术A1、运用新建字典的方式,去除重复的键2、利用集合,直接将列表转化为集合,自动去重后转回列表。有一个问题,转换为集合的同时,数据无序了。3、用列表的推导式 查看详情

数据结构:第8章学习小结

一、排序概念:排序(Sorting)是按关键字的非递减或非递增顺序对一组记录重新进行排列的操作。排序方式:1.插入排序:①直接插入排序:是一种最简单的排序方法,其基本操作是将一条记录插入到已排好序的有序表中,从而得到... 查看详情

织梦设置栏目列表排序方式

标签dede:arclist的排序是通过orderby来指定的,如下: {dede:arclistorderby=’排序字段’}  {/dede:arclist} orderby=’sortrank’文档排序方式 §orderby=’hot’或orderby=’click’表示按点击数排列 §orderby=’sortrank’或orde 查看详情

算法排序-nb三人组

快速排序:堆排序:二叉树:两种特殊二叉树:二叉树的存储方式:小结:堆排序正题:向下调整:堆排序过程:堆排序-内置模块:扩展问题topk:归并排序:怎么使用:NB三人组小结  查看详情

第七章学习小结(代码片段)

...多种查找方式,从最简单的线性表查找到树表的查找到散列表查找,不同的查找方式有不同的优点,下面根据练习来实际应用这些知识。 这个问题的任务很简单:将一个不同的正整数序列插入哈希表,并输出输入数字的位置... 查看详情

java示例代码_按我想要的方式对数组列表进行排序

java示例代码_按我想要的方式对数组列表进行排序 查看详情

子报告中的 s-s-rS 2008 交互式排序未按预期工作

...发布时间】:2010-05-2521:26:31【问题描述】:我有一个包含列表的(父级)报告。此列表的详细信息组包含一个子报告。所以基本上如果列表有10条记录(行),则子报表会执行10次。问题似乎与子报告中的交互式排序有关。它有4... 查看详情

如何以完全相同的方式对两个列表(相互引用)进行排序

】如何以完全相同的方式对两个列表(相互引用)进行排序【英文标题】:Howtosorttwolists(whichreferenceeachother)intheexactsameway【发布时间】:2012-04-0314:12:08【问题描述】:假设我有两个列表:list1=[3,2,4,1,1]list2=[\'three\',\'two\',\'four\',\'on... 查看详情

java中comparable和comparator区别小结

...意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。  此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器。该接口定义如下... 查看详情

排序算法小结

排序算法小结排序有可以分为以下几类:  (1)、插入排序:直接插入排序、二分法插入排序、希尔排序。  (2)、选择排序:简单选择排序、堆排序。  (3)、交换排序:冒泡排序、快速排序。  (4)、归并排序  (5)、基数... 查看详情

java示例代码_在JSP中以几种不同的方式对列表排序

java示例代码_在JSP中以几种不同的方式对列表排序 查看详情