我基本上通过this教程制作了带有Alphabet-Indexed节标题的列表视图。我正在努力做同样的事情,按日期排序。
这就是我的数据库中的日期列的输入方式。
String currentDateTime = DateFormat.getDateTimeInstance().format(new Date());
有人可以按日期排序指针或片段来帮助我。
答案 0 :(得分:0)
我知道的唯一方法是使用java.util.Date
。它几乎不过是一个长值的包装器,它对应于它所代表的时间与时期Jan 1, 1970 00:00:00 GMT
之间的差异。因此,您可以存储在DB long(而不是字符串)中,然后在查询表时按“date”(longs)对结果进行排序,从这些值中构造日期。这一切都是因为sqlite不支持日期格式。
Cursor c = db.rawQuery("select * from table sort by table_column_date");
for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
Date date = new Date(c.getLong("table_column_date"));
}
答案 1 :(得分:0)
一种简单的方法是使用adapter-ki t库
首先,实现DateSectionizer。它从模型中加载日期时间戳并将其“舍入”到当天的开头,因此同一天的时间戳将具有相同的格式化日期字符串。
public class DateSectionizer implements Sectionizer<Cursor>
{
private static final SimpleDateFormat YMD_FORMAT = new SimpleDateFormat("yyyy-MMMMM-dd");
private static long beginning_of_day(long timestamp)
{
Calendar c = Calendar.getInstance();
c.setTimeInMillis( timestamp );
c.set( Calendar.HOUR_OF_DAY, 0 );
c.set( Calendar.MINUTE, 0 );
c.set( Calendar.SECOND, 0 );
c.set(Calendar.MILLISECOND,0 );
return c.getTimeInMillis();
}
@Override
public String getSectionTitleForItem( Cursor cursor )
{
return YMD_FORMAT.format(new Date(beginning_of_day(cursor.getLong( 2 ));
}
}
其次,在现有的CursorAdapter周围包装一个SimpleSectionAdapter:
Context c = getApplicationContext();
YourCursorAdapter yca = new YourCursorAdaper(c , your_cursor, true);
your_list_view.setAdapter( new SimpleSectionAdapter<Cursor>(c,yca, R.layout.header_layout, R.id.date , new DateSectionizer() ));