Android ListView中带有时间数据的排序
下面是activity:
public class MainActivity extends Activity { private ListView mListView = null;
private List<TestDate> mList = null; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = (ListView) this.findViewById(R.id.main_listView);
mList = new ArrayList<TestDate>();
initData();
Collections.sort(mList, new Comparator<TestDate>() {
/**
*
* @param lhs
* @param rhs
* @return an integer < 0 if lhs is less than rhs, 0 if they are
* equal, and > 0 if lhs is greater than rhs,比较数据大小时,这里比的是时间
*/
@Override
public int compare(TestDate lhs, TestDate rhs) {
Date date1 = DateUtil.stringToDate(lhs.getDate());
Date date2 = DateUtil.stringToDate(rhs.getDate());
// 对日期字段进行升序,如果欲降序可采用after方法
if (date1.before(date2)) {
return ;
}
return -;
}
});
mListView.setAdapter(new MyAdapter(this, mList));
} private void initData() {
mList.add(new TestDate("2012-12-12 12:30", "zhangsan"));
mList.add(new TestDate("2012-12-12 10:20", "lisi"));
mList.add(new TestDate("2012-12-11 10:21", "lisi"));
mList.add(new TestDate("2012-12-11 10:20", "lisi"));
mList.add(new TestDate("2012-12-13 01:03", "wangwu"));
mList.add(new TestDate("2012-12-10 02:04", "zhaoliu"));
mList.add(new TestDate("2012-12-15 23:00", "tianqi"));
mList.add(new TestDate("2012-11-12 22:30", "wangwu"));
mList.add(new TestDate("2012-12-17 08:24", "shimei"));
mList.add(new TestDate("2012-11-10 11:10", "shisanmei"));
mList.add(new TestDate("2012-12-18 16:50", "wangan"));
mList.add(new TestDate("2012-12-19 18:00", "wangjiu"));
mList.add(new TestDate("2012-12-20 19:30", "wusi"));
mList.add(new TestDate("2012-12-20 19:30", "wusi"));
}
}
下面是工具类:
public class DateUtil { public static Date stringToDate(String dateString) {
ParsePosition position = new ParsePosition();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date dateValue = simpleDateFormat.parse(dateString, position);
return dateValue;
} }
下面是ListView用的Adapter:
public class MyAdapter extends BaseAdapter { private Context mContext;
private List<TestDate> mList; public MyAdapter(Context context, List<TestDate> list) {
this.mContext = context;
this.mList = list;
} @Override
public int getCount() {
return mList != null ? mList.size() : ;
} @Override
public Object getItem(int position) {
return mList.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = (LinearLayout) LayoutInflater.from(mContext).inflate(
R.layout.main_item, null);
holder = new ViewHolder();
holder.textView1 = (TextView) convertView
.findViewById(R.id.item_textView1);
holder.textVeiw2 = (TextView) convertView
.findViewById(R.id.item_textView2);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
} holder.textView1.setText(mList.get(position).getDate());
holder.textVeiw2.setText(mList.get(position).getName()); return convertView;
} private class ViewHolder {
private TextView textView1;
private TextView textVeiw2;
} }
下面是xml文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" > <ListView
android:id="@+id/main_listView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
tools:context=".MainActivity" /> </RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" > <TextView
android:id="@+id/item_textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_margin="10dp" /> <TextView
android:id="@+id/item_textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical" /> </LinearLayout>
下面是一个JavaBean的类:
public class TestDate { private String date;
private String name; public String getDate() {
return date;
} public String getName() {
return name;
} public TestDate(String date, String name) {
this.date = date;
this.name = name;
} }
Android ListView中带有时间数据的排序的更多相关文章
- sql 中实现打乱数据的排序
sql 中实现打乱数据的排序 order by NEWID()就实现了数据的打乱
- android listview中item通过viewpager实现《IT蓝豹》
android listview中item通过viewpager实现 android listview中item通过viewpager实现,每一个item都支持viewpager实现图片切换功能.本项 ...
- Android ListView 中的checkbox
Q:ListView + CheckBox 当上下滚动的时候有事会自动选中或取消 A:这个与ListView的缓存机制有关.当你屏幕滚动后,ListView中的item选项视图先检查缓存中是否有视图, ...
- Android,LIstView中的OnItemClick点击无效的解决办法
在List_Item布局文件中的根节点加上如下背景标黄的这一行 <?xml version="1.0" encoding="utf-8"?> < ...
- [Android] ListView中如何让onClick和onItemClick事件共存
ListView中如何使用Button,让onClick和onItemClick事件共存 假如ListView的一条记录包含一个TextView文本框,一个Button按钮,怎样能让点击按钮有事件响应 ...
- android ListView中button点击事件盖掉onItemClick解决办法
ListView 1.在android应用当中,很多时候都要用到listView,但如果ListView当中添加Button后,ListView 自己的 public void onItemClick ...
- Android ListView异步加载数据
1.主Activity public class MainActivity extends Activity { private ListView listView; private ArrayLis ...
- 关于ListView中包含EditText数据复用引起异常的解决方案
概述 前几天测试提了一个bug,在ListView中添加留言信息,导致错乱的问题.实际上就是ListView需要添加一个EditText,复用导致错乱的问题,这个问题以前也遇到过.诸如,ListVie ...
- Android ListView中Item点击事件失效解决方案
欢迎关注公众号,每天推送Android技术文章,二维码如下:(可扫描) 在平常的开发过程中,我们的ListView可能不只是简单的显示下文本或者按钮,更多的是显示复杂的布局,这样的话,我们就得自己写布 ...
随机推荐
- 完整的拆分nginx访问日志
<pre name="code" class="html"> 10.168.255.134 [09/Oct/2016:15:28:52 +0800] ...
- Unix/Linux环境C编程入门教程(40) 初识文件操作
1.函数介绍 close(关闭文件) 相关函数 open,fcntl,shutdown,unlink,fclose 表头文件 #include<unistd.h> 定义函数 int ...
- 通过实现Comparable接口结合TreeSet来对对象自动排序
经过会遇到这样的情况,对于某个对象数组或者链表要按照一定的规则进行排序,那么我们该怎么做呢? 如遇到这样的需求: 1.需求1 对于学生对象按照年龄进行排序,年龄小的排在前面. 单单看到这样的需求,实现 ...
- Populating Next Right Pointers in Each Node II 解答
Question Follow up for problem "Populating Next Right Pointers in Each Node". What if the ...
- SOCKET 实现NAT 穿越
在当前IPv4NAT盛行的网络环境下,两个用户要直接进行P2P连接是非常困难的.较好的解决办法是借助含公网的用户或是服务器中介实现P2P连接. NAT:Network Address Translat ...
- ios 计算文字的尺寸
/** * 计算文字尺寸 * @param text 需要计算尺寸的文字 * @param font 文字的字体 * @param maxSize 文字的最大尺寸 */ - (CGSize)sizeW ...
- PC-CSS-分隔线
单个标签实现分隔线: 点此查看实例展示 .demo_line_01{ padding: 0 20px 0; margin: 20px 0; line-height: 1px; border-left: ...
- [Regular Expressions] Find a String that Precedes Another String ?= , ?!
Let's image tow cases for the following string: var str = `foo foobar foobaz fooboo` First of all: w ...
- thinkphp框架的路径问题 - 总结
thinkphp框架的路径问题 - 总结 (2011-06-21 11:01:28) 转载▼ 标签: thinkphp 框架 路径 杂谈 分类: Php TP中有不少路径的便捷使用方法,比如模板中使用 ...
- Android-----------国际化多国语言文件夹命名汇总
*如果不区分地区,则不加后面的-rxx内容 Arabic, Egypt (ar_rEG) —————————–阿拉伯语,埃及 Arabic, Israel (ar_rIL) ———————— ...