怎样对ListView的项进行排序

当您使用资源浏览器查看文件时,您能够随心所欲的按名称、大小、类型及改动日期不同的列对文件进行大小排序。.Net提供的ListView组件没有直接提供这样的功能,但要实现并不难。

 

ListView.Sort()方法的功能是“对列表视图的项进行排序”,可当您调用它时却什么也没有发生,原因是您没有为listView1.ListViewItemSorter指定排序器。所以,首先必须写一个排序类。
public class mySorter:IComparer
{
private Comparer comparer;
private int sortColumn;
private SortOrder sortOrder;
public mySorter()
{
sortColumn=0;
sortOrder=SortOrder.None;
comparer=Comparer.Default;
}
//指定进行排序的列
public int SortColumn
{
get {return sortColumn;}
set {sortColumn=value;}
}
//指定按升序或降序进行排序
public SortOrder SortOrder
{
get {return sortOrder;}
set {sortOrder=value;}
}
public int Compare(object x,object y)
{
int CompareResult;
ListViewItem itemX=(ListViewItem)x;
ListViewItem itemY=(ListViewItem)y;
//在这里您能够提供自己定义的排序
CompareResult=comparer.Compare(itemX.SubItems[this.sortColumn].Text,itemY.SubItems[this.sortColumn].Text);
if (this.SortOrder==SortOrder.Ascending)
return CompareResult;
else
if (this.SortOrder==SortOrder.Descending)
return (-CompareResult);
else
return 0;
}
}

怎样使用这个类,非常easy。新建一个Windows应用程序,增加ListView组件listView1并将其View属性设为Details。

//增加排序类
private mySorter sorter;
//改动窗口构造函数
public Form1()
{
InitializeComponent();
sorter=new myColumnSorter();
//为ListViewItemSorter指定排序类
this.listView1.ListViewItemSorter=sorter;
sorter.SortOrder=SortOrder.Ascending;
}
//给单击表头事件增加代码
private void listView1_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
{
if (e.Column==this.sorter.SortColumn)
{
if (this.sorter.SortOrder==SortOrder.Ascending)
this.sorter.SortOrder=SortOrder.Descending;
else
if (this.sorter.SortOrder==SortOrder.Descending)
this.sorter.SortOrder=SortOrder.Ascending;
else
return;
}
else
{
this.sorter.SortColumn=e.Column;
}
this.listView1.Sort();
}
假设您须要自己定义排序,那么您能够改动排序器的Compare()方法。

转自domanager

怎样对ListView的项进行排序,布布扣,bubuko.com

时间: 2024-10-22 04:33:52

怎样对ListView的项进行排序的相关文章

ListView列表拖拽排序

ListView列表拖拽排序可以参考Android源代码下的Music播放列表,他是可以拖拽的,源码在[packages/apps/Music下的TouchInterceptor.java下]. 首先是搭建框架,此处的ListView列表类似于QQ消息列表,当然数据只是模拟,为了简单起见,没有把ListView的条目的所有的属性全部写上.首先是消息的实体类Msg.java: package me.chenfuduo.mymsgdrag; public class Msg { private in

Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音

转载请注明出处:http://blog.csdn.net/xiaanming/article/details/12684155 前段时间因为换工作的缘故又恰巧碰到国庆节,所以有段时间自己没有更新博客了,过完国庆到新公司报道,感觉还不错,就是现在住的地方离新公司有点远,地铁20站,伤不起啊,我每天早上7点多就要起床,然后屁颠屁颠的去挤地铁上班,晚上下班还要挤地铁,先不说路程远,车费一天就要10几块,我的银子啊,有坐龙华线去上班的深圳程序员不?听说那条线上班高峰期很挤?我没在上班高峰期坐过那趟车,我

安卓Listview 不规则项即不同item的运行

在安卓中,listview  的item 是一个不断被轮询调换位置的过程,这样 即 图片参考地址   http://www.cnblogs.com/mybkn/archive/2012/05/23/2514681.html   谢谢. 开发中 ,我们经藏会遇到listview  的每一项都不同的需求.   这个时候如果使用 以前自定义的BaseAdapter的方法的话 .在滚动的时候就会出现item布局错乱的情况,也就是说 第一项在最初的背景是红色的xml布局, 当滚动到第二项置顶,在回到顶部的

[Android分享] 【转帖】Android ListView的A-Z字母排序和过滤搜索功能

感谢eoe社区的分享 最近看关于Android实现ListView的功能问题,一直都是小伙伴们关心探讨的Android开发问题之一,今天看到有关ListView实现A-Z字母排序和过滤搜索功能并且实现汉字转成拼音的功能,转帖来和eoe的小伙伴们一同分享下! Android 有关ListView实现A-Z字母排序和过滤搜索功能并且实现汉字转成拼音的功能 我们知道一般我们对联系人,城市列表等实现A-Z的排序,因为联系人和城市列表我们可以直接从数据库中获取他的汉字拼音,而对于一般的数据,我们怎么实现A

Listview移动项 函数

老外写的Listview移动函数,支持多个选择项同时移动,比较不错,在此备份(变量名稍有修改). LV_MoveRow(Is_MoveUp = true) { If Is_MoveUp not in 1,0 Return While tempStr:=LV_GetNext(tempStr) i := A_Index, i%i% := tempStr, tempStr:="" If (!i) || ((i1 < 2) && Is_MoveUp) || ((i%i%

快速集成android实现listview的字母A-Z排序,界面侧边字母索引

 转载请标明出处 Android手机字母A-Z排序侧边索引是非常常见的功能,在此提供快速集成框架.教你用Android studio工具一分钟搞定这个效果. 实现效果: 以及点击F跳转效果 第一步库包导入实现拼音检索功能 -------拼音检索详细见: compile 'com.github.promeg:tinypinyin:1.0.0'// ~80KB同步后后面会下载80k的文件,就可以使用 -------测试一下: public void go1(View view){//按钮go1点击测

ListView列表项

方法,在xml文件中添加一个ListView,然后在MainActivity中 private ListView listView; private ArrayAdapter<String> arr_adapter; listView = (ListView) findViewById(R.id.listView1); String[] arr_data = {"明明","丽媛", "彭辉", "倩倩", &quo

javscript巧用对象特性去掉数组重复项并排序

当有一个数组a=[1,2,3,4],还有一个对象a={0:1,1:2,2:3,3:4},然后运行alert(a[0]),两种情况下的运行结果都是1,这就是说,数据集合既可以用数组表示,也可以用对象表示!但是我们是无法定义一个具有两个相同key值的object,而我们正可以利用这种特性来去掉数组中的重复项. 把数组转成一个js对象 把数组中的值变成对象中的key 把对象还原成数组 //把数组转成一个js对象 function toObj(arr){ var obj = {}; for(var i=

Android ListView 列表项点击之后,保持背景颜色

项目中突然遇到这样的问题,一些消息类的界面,需要使用listview进行显示,正常的需求是刚开始进入消息显示界面的时候,列表项显示的都是全黑的,接着点击了某一个列表项之后,就要更换成白色,并且保持白色的显示,剩下的仍旧为黑色的,一开始就有点走进了死胡同,使用selector结合shape来定义选中.未选中.点击或者点击之后的背景显示,实例如下: </pre><p></p><pre name="code" class="html&quo