【发布时间】:2015-05-17 10:36:40
【问题描述】:
我正在开发一个跟踪用户移动的应用。在每个onLocationChanged() 上,我将纬度和经度存储在ArrayList<latLng> 中,然后在路线上绘制一条折线。现在,当activity 停止时,我想保存所有用户的活动信息,例如:
- 距离
- 平均配速
- 持续时间
- 所有 ArrayList latlng 活动点
在Sqlite 数据库上稍后恢复它并用这些点绘制一条折线。
我不知道如何将纬度和经度的ArrayList 存储到数据库中的问题。
任何人都可以帮忙吗?
我的解决方案编辑,也许会对某人有所帮助!
public class SQLUtils extends SQLiteOpenHelper {
private static final String DB_NAME = "data.db";
private static final int DB_VERSION = 1;
private static final String run_table = "Run_table";
private static final String locationPoints = "Location_points";
public SQLUtils(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
Log.d("DB", "onCreate");
String runTable = "create table " + run_table + "(ID VARCHAR(10), PACE VARCHAR(10), DURATION VARCHAR(10), DISTANCE VARCHAR(10), DATE VARCHAR(10), TIME VARCHAR(10));";
String LocationTable = "create table " + locationPoints + "(ID INTEGER, POSITION INTEGER, Latitude REAL, Longitude REAL);";
db.execSQL(runTable);
db.execSQL(LocationTable);
}
public void insertRunData(String id, String pace,String duration, String distance, String date, String time) {
Log.d("DB", "onInsertRunData");
SQLiteDatabase db = this.getWritableDatabase();
String sql = "INSERT into " + run_table +
" (ID, PACE, DURATION, DISTANCE, DATE, TIME) VALUES ('" + id + "','" + pace + "','" + duration + "','" + distance +
"','" + date + "','" + time + "')";
db.execSQL(sql);
db.close();
}
public void insertLatLng(String id, int position, double latitude, double longitude){
SQLiteDatabase db = this.getWritableDatabase();
String sql = "INSERT into " + locationPoints +
" (ID, POSITION, LATITUDE, LONGITUDE) VALUES ('" + UUID.fromString(id) + "','" + Integer.toString(position) + "','"
+ String.valueOf(latitude) + "','" + String.valueOf(longitude) + "')";
db.execSQL(sql);
db.close();
}
运行片段类:
private void saveSqlRun() {
SQLUtils sqlUtils = new SQLUtils(getActivity());
sqlUtils.insertRunData(currentRun.getId(), currentRun.getAveragePace(), currentRun.getRunDuration(),
currentRun.getRunDistance(), currentRun.getRunDate(),currentRun.getRunTime());
/* Save user Location points */
for (int index = 0; index < currentRun.getLocationPoints().size(); ++index) {
sqlUtils.insertLatLng(currentRun.getId(), index, currentRun.getLocationPoints().get(index).latitude, currentRun.getLocationPoints().get(index).longitude);
}
}
这就是 run_rable 的样子:
这就是 Location_points 的样子:
【问题讨论】:
-
循环遍历arraylist并单独存储每个条目
标签: java android sqlite arraylist