×

listview排序 listview

listview排序(jq怎么实现listview的a-z字母排序和过滤搜索功能)

admin admin 发表于2023-07-18 19:39:36 浏览55 评论0

抢沙发发表评论

本文目录

jq怎么实现listview的a-z字母排序和过滤搜索功能

按照项目中类的顺序来一一介绍其功能1.SortModel 一个实体类,里面一个是ListView的name,另一个就是显示的name拼音的首字母 view plainpackage com.example.sortlistview; public class SortModel {private String name; //显示的数据private String sortLetters; //显示数据拼音的首字母public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSortLetters() {return sortLetters;}public void setSortLetters(String sortLetters) {this.sortLetters = sortLetters;} } 2.SideBar类就是ListView右侧的字母索引View,我们需要使用setTextView(TextView mTextDialog)来设置用来显示当前按下的字母的TextView,以及使用setOnTouchingLetterChangedListener方法来设置回调接口,在回调方法onTouchingLetterChanged(String s)中来处理不同的操作 view plainpackage com.example.sortlistview; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Typeface; import android.graphics.drawable.ColorDrawable; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.widget.TextView; public class SideBar extends View {// 触摸事件private OnTouchingLetterChangedListener onTouchingLetterChangedListener;// 26个字母public static String b = { "A", "B", "C", "D", "E", "F", "G", "H", "I","J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V","W", "X", "Y", "Z", "#" };private int choose = -1;// 选中private Paint paint = new Paint();private TextView mTextDialog;/*** 为SideBar设置显示字母的TextView* @param mTextDialog*/public void setTextView(TextView mTextDialog) {this.mTextDialog = mTextDialog;} public SideBar(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}public SideBar(Context context, AttributeSet attrs) {super(context, attrs);}public SideBar(Context context) {super(context);}/*** 重写这个方法*/protected void onDraw(Canvas canvas) {super.onDraw(canvas);// 获取焦点改变背景颜色.int height = getHeight();// 获取对应高度int width = getWidth(); // 获取对应宽度int singleHeight = height / b.length;// 获取每一个字母的高度for (int i = 0; i 《 b.length; i++) {paint.setColor(Color.rgb(33, 65, 98));// paint.setColor(Color.WHITE);paint.setTypeface(Typeface.DEFAULT_BOLD);paint.setAntiAlias(true);paint.setTextSize(20);// 选中的状态if (i == choose) {paint.setColor(Color.parseColor("#3399ff"));paint.setFakeBoldText(true);}// x坐标等于中间-字符串宽度的一半.float xPos = width / 2 - paint.measureText(b) / 2;float yPos = singleHeight * i + singleHeight;canvas.drawText(b, xPos, yPos, paint);paint.reset();// 重置画笔}}@Overridepublic boolean dispatchTouchEvent(MotionEvent event) {final int action = event.getAction();final float y = event.getY();// 点击y坐标final int oldChoose = choose;final OnTouchingLetterChangedListener listener = onTouchingLetterChangedListener;final int c = (int) (y / getHeight() * b.length);// 点击y坐标所占总高度的比例*b数组的长度就等于点击b中的个数.switch (action) {case MotionEvent.ACTION_UP:setBackgroundDrawable(new ColorDrawable(0x00000000));choose = -1;//invalidate();if (mTextDialog != null) {mTextDialog.setVisibility(View.INVISIBLE);}break;default:setBackgroundResource(R.drawable.sidebar_background);if (oldChoose != c) {if (c 》= 0 && c 《 b.length) {if (listener != null) {listener.onTouchingLetterChanged(b);}if (mTextDialog != null) {mTextDialog.setText(b);mTextDialog.setVisibility(View.VISIBLE);}choose = c;invalidate();}}break;}return true;}/*** 向外公开的方法** @param onTouchingLetterChangedListener*/public void setOnTouchingLetterChangedListener(OnTouchingLetterChangedListener onTouchingLetterChangedListener) {this.onTouchingLetterChangedListener = onTouchingLetterChangedListener;}/*** 接口** @author coder**/public interface OnTouchingLetterChangedListener {public void onTouchingLetterChanged(String s);} }

如何用listview实现对数值进行排序

当我们用ListView显示数据时,有一种很人性化的设计便是单击ListView某一列,该列则以升序或降序排列。自己定义一个类继承自IComparer接口class ListViewSort:IComparer{private int col; private bool descK; public ListViewSort() { col = 0; } public ListViewSort(int column, object Desc){ descK = (bool)Desc; col = column; //当前列,0,1,2...,参数由ListView控件的ColumnClick事件传递 } public int Compare(object x, object y) { int tempInt = String.Compare(((ListViewItem)x).SubItems.Text); if (descK) return -tempInt; else return tempInt; } }在ListView的ColumnClick事件中调用代码如下private void listView1_ColumnClick(object sender, ColumnClickEventArgs e){if (this.listView1.Columns.Tag == null)this.listView1.Columns.Tag = true;bool flag = (bool)this.listView1.Columns.Tag;if (flag)this.listView1.Columns.Tag = false;elsethis.listView1.Columns.Tag = true;this.listView1.ListViewItemSorter = new ListViewSort(e.Column, this.listView1.Columns.Tag);this.listView1.Sort();//对列表进行自定义排序 }

listview怎么样排序

在VB.NET中,您可以通过创建一个类来实现System.Collections.IComparer接口,实现ListView控件的排序功能。具体实现是:创建该类的实例,赋予给ListView1控件对象的ListViewItemSorter属性,然后在ListView的ColumnClick事件句柄(ListView1_ColumnClick)中添加代码实现按点击列排序。下面提供一段示例代码功能参考,请根据您的系统的实际情况进行相应的修改: Private Sub ListView1_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles ListView1.ColumnClick ListView1.Sorting = SortOrder.Ascending Dim Sorter = New ListViewSorter(e.Column) ListView1.ListViewItemSorter = Sorter End Sub Public Class ListViewSorter Implements System.Collections.IComparer Public SortIndex As Integer Public Sub New(ByVal SortIndex As Integer) Me.SortIndex = SortIndex End Sub//这里只考虑按数值排序 Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare Dim x1, y1 As ListViewItem Dim intx, inty As Integer x1 = x y1 = y intx = ParseListItemString(x1.SubItems(SortIndex).ToString()) inty = ParseListItemString(y1.SubItems(SortIndex).ToString()) If (intx 《 inty) Then Return -1 ElseIf (intx = inty) Then Return 0 End If Return 1 End Function Private Function ParseListItemString(ByVal x As String) As Integer Dim counter, i As Integer counter = 0 For i = x.Length - 1 To 0 Step -1 If (x.Chars(i) = "{") Then Exit For End If counter = counter + 1 Next i Return CInt((x.Substring(x.Length - counter, counter - 1))) End Function End Class

Delphi的ListView列排序的问题

你可以将最后汇总的那行的数据增加几个空值到SubItems里,填充起来和前面的数据对齐就是了序号 UserID UserName UserSexType UserPayMoney1 User1 Name1 1 1002 User2 Name2 2 200总计: 50 ’’ ’’ ’’

C#listview根据某列数据排序

using System;using System.Collections;using System.Windows.Forms; namespace Common{ /// 《summary》 /// 对ListView点击列标题自动排序功能 /// 《/summary》 public class ListViewHelper { /// 《summary》 /// 构造函数 /// 《/summary》 public ListViewHelper() { // // TODO: 在此处添加构造函数逻辑 // } public static void ListView_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e) { System.Windows.Forms.ListView lv = sender as System.Windows.Forms.ListView; // 检查点击的列是不是现在的排序列. if (e.Column == (lv.ListViewItemSorter as ListViewColumnSorter).SortColumn) { // 重新设置此列的排序方法. if ((lv.ListViewItemSorter as ListViewColumnSorter).Order == System.Windows.Forms.SortOrder.Ascending) { (lv.ListViewItemSorter as ListViewColumnSorter).Order = System.Windows.Forms.SortOrder.Descending; } else { (lv.ListViewItemSorter as ListViewColumnSorter).Order = System.Windows.Forms.SortOrder.Ascending; } } else { // 设置排序列,默认为正向排序 (lv.ListViewItemSorter as ListViewColumnSorter).SortColumn = e.Column; (lv.ListViewItemSorter as ListViewColumnSorter).Order = System.Windows.Forms.SortOrder.Ascending; } // 用新的排序方法对ListView排序 ((System.Windows.Forms.ListView)sender).Sort(); } } /// 《summary》 /// 继承自IComparer /// 《/summary》 public class ListViewColumnSorter : System.Collections.IComparer { /// 《summary》 /// 指定按照哪个列排序 /// 《/summary》 private int ColumnToSort; /// 《summary》 /// 指定排序的方式 /// 《/summary》 private System.Windows.Forms.SortOrder OrderOfSort; /// 《summary》 /// 声明CaseInsensitiveComparer类对象 /// 《/summary》 private System.Collections.CaseInsensitiveComparer ObjectCompare; /// 《summary》 /// 构造函数 /// 《/summary》 public ListViewColumnSorter() { // 默认按第一列排序 ColumnToSort = 0; // 排序方式为不排序 OrderOfSort = System.Windows.Forms.SortOrder.None; // 初始化CaseInsensitiveComparer类对象 ObjectCompare = new System.Collections.CaseInsensitiveComparer(); } /// 《summary》 /// 重写IComparer接口. /// 《/summary》 /// 《param name="x"》要比较的第一个对象《/param》 /// 《param name="y"》要比较的第二个对象《/param》 /// 《returns》比较的结果.如果相等返回0,如果x大于y返回1,如果x小于y返回-1《/returns》 public int Compare(object x, object y) { int compareResult; System.Windows.Forms.ListViewItem listviewX, listviewY; // 将比较对象转换为ListViewItem对象 listviewX = (System.Windows.Forms.ListViewItem)x; listviewY = (System.Windows.Forms.ListViewItem)y; string xText = listviewX.SubItems.Text; string yText = listviewY.SubItems.Text; int xInt, yInt; // 比较,如果值为IP地址,则根据IP地址的规则排序。 if (IsIP(xText) && IsIP(yText)) { compareResult = CompareIp(xText, yText); } else if (int.TryParse(xText, out xInt) && int.TryParse(yText, out yInt)) //是否全为数字 { //比较数字 compareResult = CompareInt(xInt, yInt); } else { //比较对象 compareResult = ObjectCompare.Compare(xText, yText); } // 根据上面的比较结果返回正确的比较结果 if (OrderOfSort == System.Windows.Forms.SortOrder.Ascending) { // 因为是正序排序,所以直接返回结果 return compareResult; } else if (OrderOfSort == System.Windows.Forms.SortOrder.Descending) { // 如果是反序排序,所以要取负值再返回 return (-compareResult); } else { // 如果相等返回0 return 0; } } /// 《summary》 /// 判断是否为正确的IP地址,IP范围(0.0.0.0~255.255.255) /// 《/summary》 /// 《param name="ip"》需验证的IP地址《/param》 /// 《returns》《/returns》 public bool IsIP(String ip) { return System.Text.RegularExpressions.Regex.Match(ip, @"^(25)$").Success; } /// 《summary》 /// 比较两个数字的大小 /// 《/summary》 /// 《param name="ipx"》要比较的第一个对象《/param》 /// 《param name="ipy"》要比较的第二个对象《/param》 /// 《returns》比较的结果.如果相等返回0,如果x大于y返回1,如果x小于y返回-1《/returns》 private int CompareInt(int x, int y) { if (x 》 y) { return 1; } else if (x 《 y) { return -1; } else { return 0; } } /// 《summary》 /// 比较两个IP地址的大小 /// 《/summary》 /// 《param name="ipx"》要比较的第一个对象《/param》 /// 《param name="ipy"》要比较的第二个对象《/param》 /// 《returns》比较的结果.如果相等返回0,如果x大于y返回1,如果x小于y返回-1《/returns》 private int CompareIp(string ipx, string ipy) { string ipxs = ipx.Split(’.’); string ipys = ipy.Split(’.’); for (int i = 0; i 《 4; i++) { if (Convert.ToInt32(ipxs)) { return 1; } else if (Convert.ToInt32(ipxs)) { return -1; } else { continue; } } return 0; } /// 《summary》 /// 获取或设置按照哪一列排序. /// 《/summary》 public int SortColumn { set { ColumnToSort = value; } get { return ColumnToSort; } } /// 《summary》 /// 获取或设置排序方式. /// 《/summary》 public System.Windows.Forms.SortOrder Order { set { OrderOfSort = value; } get { return OrderOfSort; } } }}

listview如何排序

function ListViewCompare(lParam1, lParam2, lParamSort: Integer): Integer stdcall;begin //lParam1是第一个Item,lParam2是第二个Item, //内部用的是快速排序,体系会给你两个Item让你比较,procedure TForm1.ListView1ColumnClick(Sender:TObject); //比较的规矩由你决定,我这里是简单的比较字符串。 Result := Comparetext(TListItem(lParam1).Text, TListItem(lParam2).Text);end;begin Listview1.CustomSort(ListViewCompare, 0); //应当是CustomSort。

如何样将listview按数值大小排序

Public Class Form1 Dim sortColumn As Integer Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load For i = 0 To 100 ListView1.Items.Add(Int(Rnd() * 10000)) ListView1.Items(i).SubItems.Add(Int(Rnd() * 10000)) ListView1.Items(i).SubItems.Add(Int(Rnd() * 10000)) ListView1.Items(i).SubItems.Add(Int(Rnd() * 10000)) Next End Sub Private Sub ListView1_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles ListView1.ColumnClick Dim columnsort As New ColumnSort(e.Column) columnsort.bAscending = (ListView1.Sorting = SortOrder.Ascending) If columnsort.bAscending Then ListView1.Sorting = SortOrder.Descending Else ListView1.Sorting = SortOrder.Ascending End If ListView1.ListViewItemSorter = columnsort ListView1.ListViewItemSorter = Nothing End Sub Public Class ColumnSort : Implements IComparer Private columnNum As Integer = 0 Public bAscending As Boolean = True Public Sub New(ByVal column_to_sort As Integer) columnNum = column_to_sort End Sub Private Function CompareInt(ByVal x As Integer, ByVal y As Integer) As Integer If x 》 y Then Return 1 ElseIf x 《 y Then Return -1 Else Return 0 End If End Function Public Function Compare(ByVal a As Object, ByVal b As Object) As Integer Implements IComparer.Compare Dim listItemA As System.Windows.Forms.ListViewItem = DirectCast(a, System.Windows.Forms.ListViewItem) Dim listItemB As System.Windows.Forms.ListViewItem = DirectCast(b, System.Windows.Forms.ListViewItem) Dim xText As String = listItemA.SubItems(columnNum).Text Dim yText As String = listItemB.SubItems(columnNum).Text Dim xInt As Integer, yInt As Integer If bAscending Then If Integer.TryParse(xText, xInt) AndAlso Integer.TryParse(yText, yInt) Then Return CompareInt(xInt, yInt) Else Return .Compare(xText, yText) End If Else If Integer.TryParse(xText, xInt) AndAlso Integer.TryParse(yText, yInt) Then Return -1 * CompareInt(xInt, yInt) Else Return -1 * .Compare(xText, yText) End If End If End Function End Class End Class

安卓中怎么实现listview 条目拖动排序

SlideAndDragListView,可排序、可滑动item显示”菜单”的ListView。SlideAndDragListView(SDLV)继承于Android的ListView,SDLV可以拖动item到SDLV的任意位置,其中包括了拖动item往上滑和往下滑;SDLV可以向右滑动item,像Android的QQ那样(QQ是向左滑),然后显现出来"菜单”之类的按钮。

c#Listview点击表头之后排序问题

其实一楼说的意思是首先你要把你算表达的数据写成一个类,有类属性。然后用List《T》来进行排序。其实可以这样做。你既然会用IComparer这个接口,你用这个接口对类进行排序,当点击列表表头是,利用p.GetType().GetProperties()反射类属性传参对LIST进行排序,然后复制给LISTVIEW。这个我用list实现过只是单一的属性排序,你涉及多属性,则可以利用反射类,或者利用全局变量来传参。public static clnum = -1;单击是 clnum = 单击的列数class a:IComparer{private string aa;private string bb;public string AA{get;set}public string BB{get;set}public int compare(a x,a y){if(clnum == 0){return x.AA.compare(y.AA)}else if(clum==1){return x.BB.compare(y.BB)}}else{return 0;}}把值付给list《a》list《a》 a1 = new list《a》;al.sort();然后把a1复制给listview控件没有编译器单词有可能打错了,这是一种方法思路。果断可以实现。