현재 Android 용 첫 번째 앱을 제작 중입니다. 내가 문제가되는 것은 SimpleCursorAdapter
과 관련된 날짜의 저장 및 현지화 된 표시입니다. 세 개의 테이블이있는 SQLitedatabase
에 대한 액세스를 캡슐화하는 클래스가 있습니다. 이 클래스는 모든 날짜를 ISO 형식 ("yyyy-MM-dd")으로 저장합니다. 날짜 값을 데이터베이스에서 읽고 화면에 표시하면 해당 값을 현지화 된 형식으로 형식화하려고합니다. 여기 제가 생각해 낸 접근 방식이 있습니다.Android에서 현지화 된 형식으로 날짜 표시
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
객체를 생성 : 그것은 서식을 할 수있는 ViewBinder
를 사용합니다. parseDatabaseDate()
SimpleDateFormat
이있는 데이터베이스에서 날짜 구문 분석을 수행합니다.이 패턴은 상수 패턴 yyyy-MM-dd
을 사용하여 구성됩니다.
이 코드는 잘 작동하지만 더 좋은 방법이 있는지 궁금합니다.
- 이
SimpleDateFormat
오브젝트합니다 (SQLiteDatabase
에서 날짜 문자열을 구문 분석하기 위해 하나가 다른 값을 포맷하는 데 사용됩니다,parseDatabaseDate()
에 사용되는) : 내가 좋아하지 않는 것은 내가 필요로한다는 것입니다java.util.Date
그때 즉시 던져진 객체 - 내 의견으로는 상용구 코드가 많이 있습니다.
그래서 저는 묻습니다 : 지역화 된 형식으로 날짜를 표시하는 더 좋은 방법이 있습니까?
다니엘, 감사합니다. android.text.format.DateFormat과 같은 일반적인 Java 클래스를 대체하는 Google 클래스에 익숙해 져야합니다. 보관 용으로 long을 사용하는 것도 좋은 생각입니다. 그게 분명히 1970 년 이전에 날짜를 저장할 필요가 없습니다이 특정 애플 리케이션을 위해 작동해야합니다. –
다니엘에 의해 주어진 코드는 이론적으로 올바른지만, 대신 약간 조정하고 그것을 만들어야 : ((TextView)보기) .setText (android.text.format.DateFormat.getDateFormat (Class.this) .format (새 Date (cursor.getLong (columnIndex))))); – okysabeni