ContentProvider с WebService в качестве источника - PullRequest
5 голосов
/ 18 января 2011

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

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

Вопрос,

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

Спасибо!

Ответы [ 2 ]

1 голос
/ 04 ноября 2014

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

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

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

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

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

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

1 голос
/ 08 февраля 2013

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

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

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

...