Получение базы данных SQLite и ее сохранение в массиве объектов - PullRequest
4 голосов
/ 21 июля 2011

Я смотрю на пример приложения Notes из Android SDK.То, что я хочу узнать, как это сделать - вместо использования CursorAdapter просто передать ListAdpater / ListView для сортировки, я хочу знать, как я могу справиться с данными самостоятельно;особенно в форме ArrayList.В этом примере заметка в основном имеет идентификатор, заголовок и тело.Я хочу знать, как я могу запросить базу данных SQLite и использовать возвращаемый ей курсор для сбора данных и создания экземпляров объекта, который я назову Note, который имеет параметры для id, title и body.В конечном итоге я хочу сохранить все эти объекты в ArrayList для управления.Я просто не знаю, как бороться с курсором.Это довольно общий вопрос, но мне просто нужно, чтобы кто-то указал мне правильное направление.

Ответы [ 3 ]

5 голосов
/ 21 июля 2011

Я не могу получить ваш вопрос, но вам нужно запросить базу данных, а затем добавить данные курсора в ArrayList?

    List<String> pointsList = new ArrayList<String>();
    database = openOrCreateDatabase("favorites", SQLiteDatabase.OPEN_READWRITE, null);
    if(database!=null)
    {
        c= database.rawQuery(QUERY, null);
        c.moveToFirst();
        while(c.isAfterLast()==false)
        {
            pointsList.add(c.getInt(c.getColumnIndex("id")); // do the same for other columns
            c.moveToNext();
        }

    }
   database.close();
   c.close();
1 голос
/ 22 июля 2011

На самом деле, я понял это сам после игры. Поэтому я понял, что использование cursor.getColumnIndex("name_of_column") вернет индекс столбца, который будет использоваться в таких командах, как cursor.getInt(cursor.getColumnIndex("_id"));. Все, что мне нужно сделать, это просто использовать цикл for, чтобы просмотреть весь список, и использовать cursor.moveToNext(), чтобы просто перебирать собранные строки. Я придумал эти минуты после того, как я отправил этот вопрос. :)

0 голосов
/ 22 июля 2011

Это может помочь вам,

   public ArrayList<ArrayList<Object>> getAllRowsAsArrays()
    {
        // create an ArrayList that will hold all the data collected from
        // the database.
        ArrayList<ArrayList<Object>> dataArrays = new ArrayList<ArrayList<Object>>();

        // This is a database call that creates a "cursor" object.
        // The cursor object store the information collected from the
        // database and is used to iterate through the data.
        Cursor cursor;

        try
        {
            // ask the database object to create the cursor.
            cursor = db.query(
                    TABLE_NAME,
                    new String[]{TABLE_ROW_ID, TABLE_ROW_ONE, TABLE_ROW_TWO},
                    null, null, null, null, null
            );

            // move the cursors pointer to position zero.
            cursor.moveToFirst();

            // if there is data after the current cursor position, add it
            // to the ArrayList.
            if (!cursor.isAfterLast())
            {
                do
                {
                    ArrayList<Object> dataList = new ArrayList<Object>();

                    dataList.add(cursor.getLong(0));
                    dataList.add(cursor.getString(1));
                    dataList.add(cursor.getString(2));

                    dataArrays.add(dataList);
                }
                // move the cursor's pointer up one position.
                while (cursor.moveToNext());
            }
        }
        catch (SQLException e)
        {
            Log.e("DB Error", e.toString());
            e.printStackTrace();
        }

        // return the ArrayList that holds the data collected from
        // the database.
        return dataArrays;
    }
...