Şu anda Android için ilk uygulamamı yapıyorum. Sorun yaşıyorum, SimpleCursorAdapter
ile bağlantılı tarihlerin depolanması ve yerelleştirilmiş gösterimi. Üç tablo ile bir SQLitedatabase
erişim kapsüll bir sınıf var. Bu sınıf, tüm tarihleri ISO formatında ("yyyy-MM-dd") saklamakla ilgilenir. Tarih değerleri veritabanından okunduğunda ve ekranda görüntülendiğinde, bunların yerelleştirilmiş bir biçimde biçimlendirilmesini istiyorum. İşte yaklaştığım yaklaşım.Android'de yerelleştirilmiş biçimde tarihleri görüntüleme
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
okunan bir desen ile bir SimpleDateFormat
nesnesi oluşturur: Bu biçimlendirme yapmak için bir ViewBinder
kullanır. parseDatabaseDate()
, sabit bir desen yyyy-MM-dd
kullanılarak oluşturulan bir SimpleDateFormat
ile veritabanından tarih ayrıştırma yapar.
Bu kod düzgün çalışıyor olsa da, bunu yapmanın daha iyi bir yolu olup olmadığını merak ediyorum.
- iki
SimpleDateFormat
nesneler (SQLiteDatabase
tarih dizesi ayrıştırmak amacıyla bir başka değer biçimlendirmek için kullanılır,parseDatabaseDate()
kullanılır): Ne sevmiyorum ihtiyacım olduğunu Oluşturulanjava.util.Date
nesnesi, hemen sonra (bence) boilerplate kodu bir sürü attı.
Bu yüzden soruyorum: tarihleri yerelleştirilmiş biçimde görüntülemek için daha iyi bir yol var mı?
Daniel sayesinde. Hala Google'ın, android.text.format.DateFormat gibi yaygın Java sınıflarının yerini alan sınıflarına aşina olmak zorundayım. Depolama için uzun süreler kullanmak da iyi bir fikir. Bu, özellikle 1970'den önceki tarihleri saklamak zorunda olmayan bu özel uygulama için çalışmalıdır. –
Daniel tarafından verilen kod teorik olarak doğrudur ancak bunun yerine bazı ayarlamalar yapmalı ve bunu yapmam gerekir: ((TextView) view) .setText (android.text.format.DateFormat.getDateFormat (Class.this) .format (yeni Tarih (cursor.getLong (columnIndex)))); – okysabeni