Android开发之ListView排序

简介:

下面是activity:

[java]  view plain copy
  1. public class MainActivity extends Activity {  
  2.   
  3.     private ListView mListView = null;  
  4.     private List<TestDate> mList = null;  
  5.   
  6.     @Override  
  7.     public void onCreate(Bundle savedInstanceState) {  
  8.         super.onCreate(savedInstanceState);  
  9.         setContentView(R.layout.activity_main);  
  10.         mListView = (ListView) this.findViewById(R.id.main_listView);  
  11.         mList = new ArrayList<TestDate>();  
  12.         initData();  
  13.         Collections.sort(mList, new Comparator<TestDate>() {  
  14.             /** 
  15.              *  
  16.              * @param lhs 
  17.              * @param rhs 
  18.              * @return an integer < 0 if lhs is less than rhs, 0 if they are 
  19.              *         equal, and > 0 if lhs is greater than rhs,比较数据大小时,这里比的是时间 
  20.              */  
  21.             @Override  
  22.             public int compare(TestDate lhs, TestDate rhs) {  
  23.                 Date date1 = DateUtil.stringToDate(lhs.getDate());  
  24.                 Date date2 = DateUtil.stringToDate(rhs.getDate());  
  25.                 // 对日期字段进行升序,如果欲降序可采用after方法  
  26.                 if (date1.before(date2)) {  
  27.                     return 1;  
  28.                 }  
  29.                 return -1;  
  30.             }  
  31.         });  
  32.         mListView.setAdapter(new MyAdapter(this, mList));  
  33.     }  
  34.   
  35.     private void initData() {  
  36.         mList.add(new TestDate("2012-12-12 12:30""zhangsan"));  
  37.         mList.add(new TestDate("2012-12-12 10:20""lisi"));  
  38.         mList.add(new TestDate("2012-12-11 10:21""lisi"));  
  39.         mList.add(new TestDate("2012-12-11 10:20""lisi"));  
  40.         mList.add(new TestDate("2012-12-13 01:03""wangwu"));  
  41.         mList.add(new TestDate("2012-12-10 02:04""zhaoliu"));  
  42.         mList.add(new TestDate("2012-12-15 23:00""tianqi"));  
  43.         mList.add(new TestDate("2012-11-12 22:30""wangwu"));  
  44.         mList.add(new TestDate("2012-12-17 08:24""shimei"));  
  45.         mList.add(new TestDate("2012-11-10 11:10""shisanmei"));  
  46.         mList.add(new TestDate("2012-12-18 16:50""wangan"));  
  47.         mList.add(new TestDate("2012-12-19 18:00""wangjiu"));  
  48.         mList.add(new TestDate("2012-12-20 19:30""wusi"));  
  49.         mList.add(new TestDate("2012-12-20 19:30""wusi"));  
  50.     }  
  51. }  


下面是工具类:

[java]  view plain copy
  1. public class DateUtil {  
  2.   
  3.     public static Date stringToDate(String dateString) {  
  4.         ParsePosition position = new ParsePosition(0);  
  5.         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");  
  6.         Date dateValue = simpleDateFormat.parse(dateString, position);  
  7.         return dateValue;  
  8.     }  
  9.   
  10. }  


下面是ListView用的Adapter:

[java]  view plain copy
  1. public class MyAdapter extends BaseAdapter {  
  2.   
  3.     private Context mContext;  
  4.     private List<TestDate> mList;  
  5.   
  6.     public MyAdapter(Context context, List<TestDate> list) {  
  7.         this.mContext = context;  
  8.         this.mList = list;  
  9.     }  
  10.   
  11.     @Override  
  12.     public int getCount() {  
  13.         return mList != null ? mList.size() : 0;  
  14.     }  
  15.   
  16.     @Override  
  17.     public Object getItem(int position) {  
  18.         return mList.get(position);  
  19.     }  
  20.   
  21.     @Override  
  22.     public long getItemId(int position) {  
  23.         return position;  
  24.     }  
  25.   
  26.     @Override  
  27.     public View getView(int position, View convertView, ViewGroup parent) {  
  28.         ViewHolder holder = null;  
  29.         if (convertView == null) {  
  30.             convertView = (LinearLayout) LayoutInflater.from(mContext).inflate(  
  31.                     R.layout.main_item, null);  
  32.             holder = new ViewHolder();  
  33.             holder.textView1 = (TextView) convertView  
  34.                     .findViewById(R.id.item_textView1);  
  35.             holder.textVeiw2 = (TextView) convertView  
  36.                     .findViewById(R.id.item_textView2);  
  37.             convertView.setTag(holder);  
  38.         } else {  
  39.             holder = (ViewHolder) convertView.getTag();  
  40.         }  
  41.   
  42.         holder.textView1.setText(mList.get(position).getDate());  
  43.         holder.textVeiw2.setText(mList.get(position).getName());  
  44.   
  45.         return convertView;  
  46.     }  
  47.   
  48.     private class ViewHolder {  
  49.         private TextView textView1;  
  50.         private TextView textVeiw2;  
  51.     }  
  52.   
  53. }  


下面是xml文件:

[html]  view plain copy
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent" >  
  5.   
  6.     <ListView  
  7.         android:id="@+id/main_listView"  
  8.         android:layout_width="match_parent"  
  9.         android:layout_height="match_parent"  
  10.         android:layout_centerHorizontal="true"  
  11.         android:layout_centerVertical="true"  
  12.         tools:context=".MainActivity" />  
  13.   
  14. </RelativeLayout>  


 

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="horizontal" >  
  6.   
  7.     <TextView  
  8.         android:id="@+id/item_textView1"  
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content"  
  11.         android:layout_gravity="center_vertical"  
  12.         android:layout_margin="10dp" />  
  13.   
  14.     <TextView  
  15.         android:id="@+id/item_textView2"  
  16.         android:layout_width="wrap_content"  
  17.         android:layout_height="wrap_content"  
  18.         android:layout_gravity="center_vertical" />  
  19.   
  20. </LinearLayout>  


下面是一个JavaBean的类:

[java]  view plain copy
  1. public class TestDate {  
  2.       
  3.     private String date;  
  4.     private String name;  
  5.   
  6.     public String getDate() {  
  7.         return date;  
  8.     }  
  9.   
  10.     public String getName() {  
  11.         return name;  
  12.     }  
  13.   
  14.     public TestDate(String date, String name) {  
  15.         this.date = date;  
  16.         this.name = name;  
  17.     }  
  18.   
  19. }  
相关文章
|
6天前
|
编解码 Java Android开发
通义灵码:在安卓开发中提升工作效率的真实应用案例
本文介绍了通义灵码在安卓开发中的应用。作为一名97年的聋人开发者,我在2024年Google Gemma竞赛中获得了冠军,拿下了很多项目竞赛奖励,通义灵码成为我的得力助手。文章详细展示了如何安装通义灵码插件,并通过多个实例说明其在适配国际语言、多种分辨率、业务逻辑开发和编程语言转换等方面的应用,显著提高了开发效率和准确性。
|
5天前
|
Android开发 开发者 UED
安卓开发中自定义View的实现与性能优化
【10月更文挑战第28天】在安卓开发领域,自定义View是提升应用界面独特性和用户体验的重要手段。本文将深入探讨如何高效地创建和管理自定义View,以及如何通过代码和性能调优来确保流畅的交互体验。我们将一起学习自定义View的生命周期、绘图基础和事件处理,进而探索内存和布局优化技巧,最终实现既美观又高效的安卓界面。
18 5
|
3天前
|
JSON Java Android开发
探索安卓开发之旅:打造你的第一个天气应用
【10月更文挑战第30天】在这个数字时代,掌握移动应用开发技能无疑是进入IT行业的敲门砖。本文将引导你开启安卓开发的奇妙之旅,通过构建一个简易的天气应用来实践你的编程技能。无论你是初学者还是有一定经验的开发者,这篇文章都将成为你宝贵的学习资源。我们将一步步地深入到安卓开发的世界中,从搭建开发环境到实现核心功能,每个环节都充满了发现和创造的乐趣。让我们开始吧,一起在代码的海洋中航行!
|
5天前
|
缓存 数据库 Android开发
安卓开发中的性能优化技巧
【10月更文挑战第29天】在移动应用的海洋中,性能是船只能否破浪前行的关键。本文将深入探讨安卓开发中的性能优化策略,从代码层面到系统层面,揭示如何让应用运行得更快、更流畅。我们将以实际案例和最佳实践为灯塔,引领开发者避开性能瓶颈的暗礁。
16 3
|
7天前
|
存储 IDE 开发工具
探索Android开发之旅:从新手到专家
【10月更文挑战第26天】在这篇文章中,我们将一起踏上一段激动人心的旅程,探索如何在Android平台上从零开始,最终成为一名熟练的开发者。通过简单易懂的语言和实际代码示例,本文将引导你了解Android开发的基础知识、关键概念以及如何实现一个基本的应用程序。无论你是编程新手还是希望扩展你的技术栈,这篇文章都将为你提供价值和启发。让我们开始吧!
|
13天前
|
Java API Android开发
安卓应用程序开发的新手指南:从零开始构建你的第一个应用
【10月更文挑战第20天】在这个数字技术不断进步的时代,掌握移动应用开发技能无疑打开了一扇通往创新世界的大门。对于初学者来说,了解并学习如何从无到有构建一个安卓应用是至关重要的第一步。本文将为你提供一份详尽的入门指南,帮助你理解安卓开发的基础知识,并通过实际示例引导你完成第一个简单的应用项目。无论你是编程新手还是希望扩展你的技能集,这份指南都将是你宝贵的资源。
42 5
|
12天前
|
设计模式 IDE Java
探索安卓开发:从新手到专家的旅程
【10月更文挑战第22天】 在数字时代的浪潮中,移动应用开发如同一座金矿,吸引着无数探险者。本文将作为你的指南针,指引你进入安卓开发的广阔天地。我们将一起揭开安卓平台的神秘面纱,从搭建开发环境到掌握核心概念,再到深入理解安卓架构。无论你是初涉编程的新手,还是渴望进阶的开发者,这段旅程都将为你带来宝贵的知识和经验的财富。让我们开始吧!
|
2天前
|
移动开发 Java Android开发
探索Android与iOS开发的差异性与互联性
【10月更文挑战第32天】在移动开发的大潮中,Android和iOS两大平台各领风骚。本文将深入浅出地探讨这两个平台的开发差异,并通过实际代码示例,展示如何在各自平台上实现相似的功能。我们将从开发环境、编程语言、用户界面设计、性能优化等多个角度进行对比分析,旨在为开发者提供跨平台开发的实用指南。
18 0
|
12天前
|
搜索推荐 Android开发 UED
安卓开发中的自定义视图:打造个性化用户界面
【10月更文挑战第22天】在安卓应用的海洋中,如何让你的应用脱颖而出?一个独特且直观的用户界面(UI)至关重要。本文将引导你通过自定义视图来打造个性化的用户体验,从基础的视图绘制到触摸事件的处理,我们将一步步深入探讨。准备好了吗?让我们开始吧!
|
12天前
|
Android开发
我是一位Android工程师,用通义灵码的AS插件做开发工作助手,对比之前没有灵码,现在提效了60%
我是一位Android工程师,用通义灵码的AS插件做开发工作助手,对比之前没有灵码,现在提效了60%
28 0