アダプターに渡すクエリを使用してカーソルをロードした後、Android でこのコードを実行しますが、日付はミリ秒形式で長いため、アダプターをロードする前に適切にフォーマットする必要があります! 問題は、このコードが 50 項目のロードを渡すのに 14 秒かかっていることです。アダプタ getView 内で呼び出すと問題が悪化します。スクロールすると遅くなります。この関数を取り出すと、プログラムはスムーズに実行されます。
これは私のリストフラグメント内の呼び出しです
private String dateFormatPatternEdited(long timeMS) {
android.text.format.DateFormat df = new android.text.format.DateFormat();
final Calendar eDate = Calendar.getInstance();
Calendar sDate = Calendar.getInstance();
sDate.setTimeInMillis(timeMS);
long daysBetween = 0;
while (sDate.before(eDate)) {
sDate.add(Calendar.DAY_OF_MONTH, 1);
daysBetween++;
}
String mDateFormatPattern = FuelTrackerApplication.dateFormat.format(timeMS);
if (daysBetween < 2){
mDateFormatPattern = FuelTrackerApplication.timeFormat.format(timeMS);
} else if(daysBetween < 365){
mDateFormatPattern = df.format(FuelTrackerApplication.dateFormatPattern,timeMS).toString();
}
return mDateFormatPattern;
}
これは、FuelTrackerApplication の onCreate 内で呼び出される日付形式を初期化したものです。これに問題はないと思います。
public void initializeDateFormat() {
android.text.format.DateFormat df = new android.text.format.DateFormat();
dateFormatPattern = "MMM dd";
if (android.os.Build.VERSION.SDK_INT >= 18){
dateFormatPattern = df.getBestDateTimePattern(Locale.getDefault(), dateFormatPattern);
}
dateFormat = df.getMediumDateFormat(getApplicationContext());
timeFormat = df.getTimeFormat(getApplicationContext());
dateFormat2 = df.getLongDateFormat(getApplicationContext());
}