我目前正在为 Android 构建我的第一个应用程序。我遇到的问题是与SimpleCursorAdapter. 我有一个类,它封装了对SQLitedatabase 具有三个表的访问。此类负责以 ISO 格式(“yyyy-MM-dd”)存储所有日期。当从数据库中读取日期值并显示在屏幕上时,我希望它们以本地化格式进行格式化。这是我想出的方法。它使用 aViewBinder来进行格式化:
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()创建一个SimpleDateFormat具有从 读取的模式的对象strings.xml。使用使用常量模式构造的 aparseDatabaseDate()解析数据库中的日期。SimpleDateFormatyyyy-MM-dd
虽然这段代码工作得很好,但我想知道是否有更好的方法来做到这一点。我不喜欢的是我需要:
- 两个
SimpleDateFormat对象(一个用于parseDatabaseDate()从 解析日期字符串SQLiteDatabase,另一个用于格式化值) java.util.Date创建然后立即丢弃的对象- 相当多(在我看来)样板代码。
所以这就是我要问的原因:有没有更好的方法以本地化格式显示日期?