私の問題は、KEY_DATE と KEY_TIME の 2 つの文字列をチャートの日付/時刻形式に変換することです。それらをdoubleに変換することも解決策になるかどうかはわかりません。
4 つのタイプ STRING 列を持つテーブルを持つ SQLite データベースがあります。
public static final String KEY_ROWID = "_id";
public static final String KEY_WORKOUT = "workout_type";
public static final String KEY_DATE = "date";
public static final String KEY_TIME = "workout_time";
このデータは、次の SQL を使用してデータベースに格納されています。
db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ROWID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_WORKOUT
+ " TEXT NOT NULL, " + KEY_DATE + " TEXT NOT NULL, "
+ KEY_TIME + " TEXT NOT NULL);"
ワークアウト アプリにストップウォッチがあります。ユーザーがそこに送信すると、次のようになります。
- 現在のシステム日付は文字列に変換され、dB に KEY_DATE (形式 dd-mmm-yy) として格納されます。
- 時間、分、秒のストップウォッチの LONG 値は文字列に変換され、KEY_TIME として連結され、dB (形式: hh:mm:ss) に格納されます。
Eclipse で稼働しているachartengineを使用して、このデータをチャートに表示したいと思います。
KEY_DATE は x 軸になり、KEY_TIME は y 軸になります。
次のメソッドは、データベースから KEY_DATE と KEY_TIME を取得します。
public String getWorkoutDate(){
String[] columns = new String[] { KEY_ROWID, KEY_WORKOUT, KEY_DATE,
KEY_TIME };
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null,
null, null);
String result = "";
int iDate = c.getColumnIndex(KEY_DATE);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
result = result + c.getString(iDate);
}
return result;
}
public String getWorkoutTime(){
String[] columns = new String[] { KEY_ROWID, KEY_WORKOUT, KEY_DATE,
KEY_TIME };
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null,
null, null);
String result = "";
int iTime = c.getColumnIndex(KEY_TIME);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
result = result + c.getString(iTime);
}
return result;
}
文字列を日付と時刻の形式に変換する次のメソッドを作成しました。それらをどのように使用するか、またはそれらが適切かどうかはわかりません。
public Date stringToDate(String stringDate) throws java.text.ParseException {
SimpleDateFormat formatter;
Date date;
formatter = new SimpleDateFormat("dd-MMM-yy");
date = (Date) formatter.parse(stringDate);
System.out.println("stringToDate: Today is " + date);
return date;
}
public Date stringToTime(String stringTime) throws ParseException{
SimpleDateFormat formatter;
Date time;
formatter = new SimpleDateFormat("hh:mm:ss");
time = (Date) formatter.parse(stringTime);
System.out.println("Time: " + formatter.format(time));
return time;
}
これらの文字列を日時に変換するコーディングの助けが必要です。それらを格納するコレクションの種類がわかりません。
achartengine サンプルでは、x 値と y 値は ArrayList に格納されます。
KEY_TIME 値が y 軸で 60 分を超えることはありません。したがって、たとえば Double に変換できます。35 分 30 秒は 35.3 になります。
KEY_DATE は x 軸上に dd-mmm または dd-mmm-yy として表示されます。このデータを格納するために使用する必要がある ArrayList のタイプがわかりません。
データを適切なタイプとして格納したら、DBHelper を使用して achartengine でデータをコーディングする方法を理解したと思います。
私は初心者のプログラマーで、コードの助けが必要です。これは、私の最初のアプリが Google Play マーケットに向けて準備される前の私のコードの最後の問題です! どんな助けでも大歓迎です。