2013-11-23 3 views

ответ

2

С 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

Смежные вопросы