我正在构建我的第一个Android应用程序。我遇到麻烦的是与SimpleCursorAdapter相关联的日期的存储和本地化显示。我有一个类,它使用三个表封装对SQLitedatabase的访问。该类负责以ISO格式(“yyyy-MM-dd”)存储所有日期。当日期值从数据库中读取并显示在屏幕上时,我希望它们以本地化格式进行格式化。这是我提出的方法。它使用ViewBinder进行格式化:
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Cursor cursor,
int columnIndex) {
if (view.getId() == R.id.text1) {
((TextView) view).setText(getDateFormatView().format(
parseDatabaseDate(cursor.getString(columnIndex))));
return true;
} else if (view.getId() == R.id.text2) {
((TextView)view).setText(
cursor.getString(columnIndex));
return true;
} else {
return false;
}
}
});
getDateFormatView()创建一个具有从strings.xml读取的模式的SimpleDateFormat对象。 parseDatabaseDate()使用使用常量模式yyyy-MM-dd构造的SimpleDateFormat对数据库中的日期进行解析。
虽然这段代码工作正常,我想知道是否有更好的方法来做到这一点。我不喜欢的是我需要:
>两个SimpleDateFormat对象(一个用于parseDatabaseDate(),以便从SQLiteDatabase解析日期字符串,另一个用于格式化该值)
>一个创建的java.util.Date对象,立即抛出
>相当多(在我看来)样板代码。
所以这就是为什么我问:有更好的方式显示本地化格式的日期?