将 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 将其分开。