2

Stringデータベースからミリ秒を取得してSQLiteいて、それをフォーマットされた日付に変換したいと思いますString。基本的には機能しますが、配列で試している場合は機能しません(以下を参照)。をスローしNumberFormatExceptionます。どうすればこれを修正できますか?

adapter = new SimpleCursorAdapter(this, R.layout.listrow, cursor,
        new String[] { getDate(Long.parseLong(Database.KEY_DATE), "dd. MMMM yyyy hh:mm:ss") , Database.KEY_NAME },
        new int[] {R.id.text1, R.id.text2}, 0);

public static String getDate(Long milliSeconds, String dateFormat){
SimpleDateFormat formatter = new SimpleDateFormat(dateFormat);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(milliSeconds);
return formatter.format(calendar.getTime());
}
4

1 に答える 1

9

から値が返されるまで、解析することはできませんnew SimpleCursorAdapterSimpleCursorAdapterこれは、独自のタイプを作成してオーバーライドする必要があることを意味しますsetViewText

このようなもの:

adapter = new MySimpleCursorAdapter(this, R.layout.listrow, cursor,
        new String[] { Database.KEY_DATE , Database.KEY_NAME },
        new int[] {R.id.text1, R.id.text2}, 0);

// ...

public static String getDate(Long milliSeconds, String dateFormat) {
    SimpleDateFormat formatter = new SimpleDateFormat(dateFormat);
    return formatter.format(milliSeconds);
}

// In MySimpleCursorAdapter.java:

public class MySimpleCursorAdapter extends SimpleCursorAdapter {
    @Override
    public void setViewText(TextView v, String text) {
        if (v.getId() == R.id.text1) { // Make sure it matches your time field
            // You may want to try/catch with NumberFormatException in case `text` is not a numeric value
            text = WhateverClass.getDate(Long.parseLong(text), "dd. MMMM yyyy hh:mm:ss");
        }
        v.setText(text);
    }
}
于 2012-08-25T20:36:18.933 に答える