Может ли кто-нибудь сказать, как я могу создать ContentProvider, который может запрашивать несколько баз данных/ContentProviders для поисковых предложений, предоставляемых SearchView.ContentProvider для нескольких баз данных/ContentProviders
ответ
С ContentProviders, вы запрашиваете для данных с использованием ContentUrl, который будет выглядеть примерно так
content://<authority>/<data_type>/<id>
власти это имя поставщика контента, например, контактов или для пользовательских, будет com.xxxxx.yyy.
тип_данных и идентификатор должны указать, какие данные необходимо предоставить от и, в случае необходимости, конкретное значение ключа.
Итак, если вы создаете своего настраиваемого поставщика контента, вам нужно проанализировать содержимое uri, которое вы получаете как параметр в функции запроса, и решить, какие данные вам нужно вернуть в качестве курсора. Класс UriMatcher - очень хороший выбор для этого случая. Вот пример
static final String URL = "content://com.mycompany.myapp/students";
static final Uri CONTENT_URI = Uri.parse(URL);
static final UriMatcher uriMatcher;
static{
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI("com.mycompany.myapp", "students", 1);
uriMatcher.addURI("com.mycompany.myapp", "students/#", 2);
}
затем в функции запроса, вы бы что-то вроде этого:
switch (uriMatcher.match(uri)) {
case 1:
// we are querying for all students
// return a cursor all students e.g. "SELECT * FROM students"
break;
case 2:
// we are querying for all students
// return a cursor for the student matching the given id (the last portion of uri)
// e.g. "SELECT * FROM students WHERE _id = n"
break;
default:
throw new IllegalArgumentException("Unknown URI " + uri);
}
Я надеюсь, что это ответ на ваш вопрос и направить вас на правильный путь.
Вы можете увидеть хорошую статью с полным пример о том, как использовать их, здесь http://www.tutorialspoint.com/android/android_content_providers.htm
- 1. LINQ для нескольких баз данных
- 2. Запрос для нескольких баз данных
- 3. TransactionManager для нескольких баз данных
- 4. Поддержка нескольких баз данных
- 5. Объединение нескольких баз данных
- 6. ContentProvider - возврат нескольких курсоров или пользовательских объектов
- 7. ContentProvider для Google Диска
- 8. Использование нескольких баз данных для Mediawiki
- 9. xpages Совокупность значений для нескольких баз данныхNames
- 10. SQL-запрос для нескольких серверов баз данных
- 11. Схема общей информации для нескольких баз данных
- 12. Широковещательный приемник для нескольких баз данных Курсор
- 13. Разработка баз данных для нескольких языков.
- 14. откат транзакций для нескольких баз данных
- 15. ADO.Net Entity Framework для нескольких баз данных
- 16. Загрузка нескольких баз данных SQL для запроса
- 17. Проблема с подсчетом для нескольких баз данных
- 18. Создание курсора pyobbc для нескольких баз данных
- 19. Shell Скрипт для обновления нескольких баз данных
- 20. SessionFactory - одна фабрика для нескольких баз данных
- 21. создание логина для нескольких баз данных
- 22. EnableTransactionManagement для нескольких баз данных весной
- 23. Запрос LINQ для нескольких баз данных C#
- 24. Внешний ключ для нескольких баз данных
- 25. Столбец уникального идентификатора для нескольких баз данных
- 26. Общие хранимые процедуры для нескольких баз данных
- 27. Изменение имени подключения для нескольких баз данных
- 28. Настройка mongomapper для нескольких баз данных
- 29. Elasticsearch для индексирования нескольких баз данных
- 30. Программно настроить ActiveRecordFacility для нескольких баз данных