ContentProvider с WebService как источник

Сценарий следующий:

  • У меня есть приложение для Android, которое в основном состоит из карты.
  • Это приложение запрашивает различные веб-службы, такие как Foursquare или Wikipedia, чтобы получить список мест и нанести их на карту.

Вопрос,

  • Кто-нибудь знает, как создать поставщика контента, где источником данных является веб-сервис (например, упомянутый выше), а не db? Было бы здорово, если бы вы могли указать мне в правильном направлении.

Благодаря!

Я искал то же самое, что и вы, и я прошел через DataDroid http://www.datadroidlib.com/ . Я думаю, что это проще в использовании, и это простой способ обработки REST, если ваш веб-сервис ориентирован на REST.

Редактировать:

DataDroid теперь отмечен как устаревший. Они переезжают в Robospice, см. https://github.com/stephanenicolas/robospice

Кто-нибудь знает, как создать поставщика контента, где источником данных является веб-сервис (например, упомянутый выше), а не db?

Примите во внимание, что следующий ответ можно считать довольно старомодным «ручным» методом.

Вы можете создать поставщика контента, который запрашивает веб-службу, и преобразует полученный результат в курсор .

Чтобы запросить веб-службу, вы можете использовать запрос HttpClient и HttpGet . Вы можете найти учебник по MyKong о том, как это сделать. Для этого есть несколько новых альтернатив .

При анализе результатов поиска, полученных из веб-службы, вы можете создать собственный курсор с классом MatrixCursor , добавив строки с addRow () для каждого отдельного результата.

Если вы это сделаете, убедитесь, что вы всегда вызываете свой контент-провайдер через фоновый поток (например, используя CursorLoader , AsyncTask или другую форму потоковой передачи), в противном случае ваша сетевая операция будет включена в основной поток пользовательского интерфейса.