Моя проблема заключается в преобразовании двух строк: KEY_DATE и KEY_TIME в форматы даты/времени для диаграммы. Я не знаю, может ли преобразование их в двойников быть решением.
У меня есть база данных SQLite, в которой есть таблица с четырьмя столбцами типа STRING.
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);"
В моем приложении для тренировок есть секундомер. Когда пользователь отправляет туда время:
- Текущая системная дата преобразуется в строку и сохраняется в дБ как KEY_DATE (формат дд-ммм-гг).
- ДЛИННЫЕ значения часов, минут и секунд секундомера преобразуются в строку, объединяются как KEY_TIME и сохраняются в дБ (формат: чч:мм:сс).
Я хочу отобразить эти данные на диаграмме с помощью achartengine, который запущен и работает в Eclipse. .
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 никогда не будет превышать 60 минут по оси Y. Таким образом, он может быть преобразован в Double, например. 35 минут 30 секунд будет 35,3.
KEY_DATE будет располагаться по оси X как дд-ммм или дд-ммм-гг. Я не знаю, какой тип ArrayList мне нужно использовать для хранения этих данных.
После того, как у меня есть данные, сохраненные в правильном типе, я думаю, что знаю, как кодировать данные в achartengine с помощью DBHelper.
Я начинающий программист и мне нужна помощь с кодом. Это последняя проблема в моем коде перед тем, как мое первое приложение будет готово для Google Play Market! Любая помощь будет принята с благодарностью.