ContentProvider без SQL - PullRequest
       5

ContentProvider без SQL

8 голосов
/ 09 апреля 2011

У меня есть две части данных, которые должны быть доступны из внешних приложений и сохранены.Согласно документации ContentProviders - единственный возможный способ, но также упоминается внешнее хранилище.ContentProviders реализуют подобный базе данных «интерфейс», и использование базы данных было бы крайне ненужным для двух частей данных.Я бы предпочел сохранить их в файл, но использование ContentProvider путем реализации абстрактных методов проблематично, поскольку методы структурированы как запросы к базе данных.

Я знаю, что нет ничего, указывающего, что ContentProviders должен использовать базу данных подхранить данные, но есть ли другой способ сохранить минимальный объем данных, которые должны быть переданы в файловую систему?

Ответы [ 2 ]

6 голосов
/ 09 апреля 2011

Я просто использовал MatrixCursor, чтобы решить эту проблему. Посмотрите на это.

Редактировать: Извините, я только что отсканировал вопрос, когда я ответил на него. ContentProvider - единственный способ для приложений обмениваться данными. Для операций в Приложении можно использовать SharedPreferences для небольших данных с добавлением постоянства.

Edit v2: вот функция, которую я использовал для заполнения MatrixCursor для функции запроса моего ContentProvider. Я использую предопределенный созданный мной VIEW, который возвращает набор различных значений, и это устанавливает курсор с _ids, который я могу передать моему ExpandableListView.

private Cursor getFactions() {
        MatrixCursor mc = new MatrixCursor(Model.Faction.PROJECTION);
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        Cursor c = db.query(MODELFACTION_TABLE_NAME, new String[] { Model.Faction.FACTION }, null, null, null, null, Model.Faction.FACTION + " ASC");
        c.moveToFirst();
        do {
            mc.addRow(new Object[] { c.getPosition(), c.getString(c.getColumnIndex(Model.Faction.FACTION))});               
        } while (c.moveToNext() && ! c.isAfterLast());
        c.close();
        db.close();
        return mc;
    }
1 голос
/ 09 апреля 2011

Класс SharedPreferences предоставляет общую структуру, которая позволяет сохранять и извлекать постоянные пары ключ-значение примитивных типов данных.Вы можете использовать SharedPreferences для сохранения любых примитивных данных: логические значения , числа с плавающей запятой , целые числа , длинных и строк .Эти данные будут сохраняться в течение сеансов пользователя (даже если ваше приложение уничтожено)

Полезные ссылки:

http://developer.android.com/reference/android/content/SharedPreferences.html

http://developer.android.com/guide/topics/data/data-storage.html

...