将 SQLite 数据拉取到数组列表
Pull SQLite data to an array list
所以我一直在尝试使用 cursorLoader,但我似乎无法绕过它。我有一个数据库,并且设置了 class。我将数据存储在 SQLite 数据库中。我现在希望能够从该行(称为位置)获取所有数据,并且我想将它存储在一个数组列表中以便我可以使用它。 CursorLoader 的代码如下:
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
markerPoints = new ArrayList<LatLng>();
switch (id) {
case NOTES_LOADER: {
return new CursorLoader(
this, // Parent activity context
NotesProvider.CONTENT_URI, // Table to query
null, // Projection to return
DBOpenHelper.NOTE_DATE + " = " + dateString, // No selection clause
null, // No selection arguments
null // Default sort order
);
}
case NOTES_LOCATION: {
return new CursorLoader(
this,
NotesProvider.CONTENT_URI,
null,
DBOpenHelper.NOTE_LOCATION,
null,
null
);
}
default: {
// An invalid id was passed in
return null;
}
}
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
}
棘手的部分是我要加载的位置必须来自特定日期 (NOTE_DATE)。所以数组列表只能来自例如2016-02-17。
一旦选择了日期,这些位置将被保存到数组中,然后我可以继续使用它们。有任何想法吗?
所以我设法解决了这个问题。我使用的代码如下:
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
ArrayList<LatLng> points = new ArrayList<LatLng>();
PolylineOptions lineOptions;
try {
int columnIndex = data.getColumnIndex(DBOpenHelper.NOTE_LOCATION);
while (data.moveToNext()) {
String latLongStr = data.getString(columnIndex);
StringTokenizer tokens = new StringTokenizer(latLongStr, ",");
String latString = tokens.nextToken();
String longString = tokens.nextToken();
double lat = Double.parseDouble(latString);
double lng = Double.parseDouble(longString);
points.add(new LatLng(lat, lng));
}
所以我不得不将数组列表传递到完成的游标中,然后使用 Tokenizer 将其分开。
所以我一直在尝试使用 cursorLoader,但我似乎无法绕过它。我有一个数据库,并且设置了 class。我将数据存储在 SQLite 数据库中。我现在希望能够从该行(称为位置)获取所有数据,并且我想将它存储在一个数组列表中以便我可以使用它。 CursorLoader 的代码如下:
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
markerPoints = new ArrayList<LatLng>();
switch (id) {
case NOTES_LOADER: {
return new CursorLoader(
this, // Parent activity context
NotesProvider.CONTENT_URI, // Table to query
null, // Projection to return
DBOpenHelper.NOTE_DATE + " = " + dateString, // No selection clause
null, // No selection arguments
null // Default sort order
);
}
case NOTES_LOCATION: {
return new CursorLoader(
this,
NotesProvider.CONTENT_URI,
null,
DBOpenHelper.NOTE_LOCATION,
null,
null
);
}
default: {
// An invalid id was passed in
return null;
}
}
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
}
棘手的部分是我要加载的位置必须来自特定日期 (NOTE_DATE)。所以数组列表只能来自例如2016-02-17。 一旦选择了日期,这些位置将被保存到数组中,然后我可以继续使用它们。有任何想法吗?
所以我设法解决了这个问题。我使用的代码如下:
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
ArrayList<LatLng> points = new ArrayList<LatLng>();
PolylineOptions lineOptions;
try {
int columnIndex = data.getColumnIndex(DBOpenHelper.NOTE_LOCATION);
while (data.moveToNext()) {
String latLongStr = data.getString(columnIndex);
StringTokenizer tokens = new StringTokenizer(latLongStr, ",");
String latString = tokens.nextToken();
String longString = tokens.nextToken();
double lat = Double.parseDouble(latString);
double lng = Double.parseDouble(longString);
points.add(new LatLng(lat, lng));
}
所以我不得不将数组列表传递到完成的游标中,然后使用 Tokenizer 将其分开。