我目前正在为 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()
解析数据库中的日期。SimpleDateFormat
yyyy-MM-dd
虽然这段代码工作得很好,但我想知道是否有更好的方法来做到这一点。我不喜欢的是我需要:
- 两个
SimpleDateFormat
对象(一个用于parseDatabaseDate()
从 解析日期字符串SQLiteDatabase
,另一个用于格式化值) java.util.Date
创建然后立即丢弃的对象- 相当多(在我看来)样板代码。
所以这就是我要问的原因:有没有更好的方法以本地化格式显示日期?