当前位置:嗨网首页>书籍在线阅读

07-历史记录

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

20.2.4 历史记录

本系统历史记录只获取用户之前的查找记录和导航记录,当用户单击历史记录后,将获得之前查找的地名和导航过的路径。该功能由HistoryActivity.java、DbAdapter.java等文件完成,以下重点介绍这两个文件。

HistoryActivity.java是历史记录主页面,render_tracks()方法从数据库中读取历史记录,并更新到列表中,代码如下。

private void render_tracks() { Log.d(TAG, "renderListView."); mTrackCursor = mDbHelper.getAllTracks(); startManagingCursor(mTrackCursor); String[] from = new String[] { TrackDbAdapter.NAME, TrackDbAdapter.CREATED ,TrackDbAdapter.DESC}; int[] to = new int[] { R.id.name, R.id.created ,R.id.desc}; SimpleCursorAdapter tracks = new SimpleCursorAdapter(this, R.layout.track_row, mTrackCursor, from, to); setListAdapter(tracks); } protected void onListItemClick(ListView l, View v, int position, long id) { Log.d(TAG, "onListItemClick."); super.onListItemClick(l, v, position, id); Cursor c = mTrackCursor; c.moveToPosition(position); Intent i = new Intent(this, ShowTrack.class); i.putExtra(TrackDbAdapter.KEY_ROWID, id); i.putExtra(TrackDbAdapter.NAME, c.getString(c .getColumnIndexOrThrow(TrackDbAdapter.NAME))); i.putExtra(TrackDbAdapter.DESC, c.getString(c .getColumnIndexOrThrow(TrackDbAdapter.DESC))); startActivity(i); }

DbAdapter.java中完成数据表的创建和更新,重新定义了SQLiteOpenHelper的onCreate和onUpdate方法。关键代码如下。

public class DbAdapter { private static final String TAG = "DbAdapter"; private static final String DATABASE_NAME = "History.db"; private static final int DATABASE_VERSION = 1; public class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } public void onCreate(SQLiteDatabase db) { String tracks_sql = "CREATE TABLE " + TrackDbAdapter.TABLE_NAME + " (" +TrackDbAdapter.ID +"INTEGER primary key autoincrement," +TrackDbAdapter.NAME +"text not null,"

  • TrackDbAdapter.DESC + " text ,"
  • TrackDbAdapter.DIST + " LONG ,"
  • TrackDbAdapter.TRACKEDTIME + " LONG ,"
  • TrackDbAdapter.LOCATE_COUNT + " INTEGER, "
  • TrackDbAdapter.CREATED + " text, "
  • TrackDbAdapter.AVGSPEED + " LONG, "
  • TrackDbAdapter.MAXSPEED + " LONG ," +TrackDbAdapter.UPDATED+"text" +");"; Log.i(TAG, tracks_sql); db.execSQL(tracks_sql); String locats_sql = "CREATE TABLE " + LocateDbAdapter.TABLE_NAME + " (" +LocateDbAdapter.ID +"INTEGER primary key autoincrement," +LocateDbAdapter.TRACKID +"INTEGER not null,"
  • LocateDbAdapter.LON + " DOUBLE ,"
  • LocateDbAdapter.LAT + " DOUBLE ,"
  • LocateDbAdapter.ALT + " DOUBLE ," +LocateDbAdapter.CREATED+"text" +");"; Log.i(TAG, locats_sql); db.execSQL(locats_sql); } public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + LocateDbAdapter.TABLE_NAME +“;”); db.execSQL("DROP TABLE IF EXISTS " + TrackDbAdapter.TABLE_NAME + ";"); onCreate(db); } } }