シナリオは次のとおりです。
- 基本的にマップビューで構成されるAndroidアプリを持っています。
- このアプリは、FoursquareやWikipediaなどのさまざまなWebサービスにクエリを実行して、場所のリストを取得し、それらを地図にプロットします。
質問、
- データソースがデータベースではなくWebサービス(上記のような)であるコンテンツプロバイダーを構築する方法を知っている人はいますか?私を正しい方向に向けていただければ幸いです。
ありがとう!
シナリオは次のとおりです。
質問、
ありがとう!
データ ソースが db ではなく Web サービス (上記のようなもの) であるコンテンツ プロバイダーを構築する方法を知っている人はいますか?
次の回答は、かなり古風な「手動」の方法と見なされる可能性があることを考慮してください。
Web サービスにクエリを実行し、取得した結果をカーソルに変換するコンテンツ プロバイダーを構築できます。
Web サービスを照会するには、 HttpClientおよびHttpGet要求を使用できます。これを行う方法については、 MyKongのチュートリアルを参照してください。これを行うための新しい代替手段もいくつかあります。
Web サービスから取得した検索結果を解析しながら、個々の結果ごとにaddRow()で行を追加することにより、 MatrixCursorクラスで独自のカーソルを作成できます。
これを行う場合は、常にバックグラウンド スレッドを介して (つまり、 CursorLoader、AsyncTask 、または別の形式のスレッドを使用して)コンテンツ プロバイダーを呼び出すようにしてください。そうしないと、ネットワーク操作がメイン UI スレッドで終了します。
私はあなたと同じものを探していましたが、DataDroid http://www.datadroidlib.com/に出会いました。Web サービスが REST 指向である場合、REST を処理する簡単な方法であり、より使いやすいと思います。
編集:
DataDroid は非推奨としてマークされました。彼らはロボスパイスに移動しますhttps://github.com/stephanenicolas/robospiceを参照してください