0

特定の場所にあるすべてのレストランを一覧表示する Android アプリを設計しています。これは、アプリの起動時に発生します。場所が変わると、アプリが既に開かれている場合でも、それに応じてレストランのリストが変わるはずです。私がグーグルで得た例が何であれ、ボタンをクリックするだけでこのレストランの人口を増やします。しかし、私の場合は起動時に発生し、アプリが既に起動されている場合は、場所によってはリスト自体が変更されるはずです。

AsyncTask のサブクラスがある MainClass を作成しました。このサブクラスには、LocationListener を実装するクラスがあります。しかし問題は、場所が変更されたときに結果を自動的に取得するために、onLocationChange で doInBackground() メソッドを再度呼び出す必要があることです。

どうすればいいですか?

4

3 に答える 3

2

ユーザーの場所を取得し、新しいレストランのデータを収集するためのすべてのロジックを に入れますService。はService、ロケーションの更新をリッスンし (常に実行したい場合は、疎間隔に設定することをお勧めします)、AsyncTask新しいデータを必要とする十分な重要な変更が発生するたびに、リストを更新します。

フォアグラウンド (とメソッドの間)ServiceにあるActivityときに にバインドして、最新の情報を取得し、がリストに表示されている間にデータが更新された場合はコールバックとして登録できます。onPause()onResume()ActivitynotifyDataSetChanged()

Serviceアプリケーションでローカルにバインドを作成する方法について詳しくは、こちらをご覧ください。

HTH

于 2012-05-08T16:01:43.027 に答える
1

レストラン リストに ArrayAdapter を使用し、そのインスタンスを Main クラスに保存します。場所が変更されるたびに、AsyncTask を使用して近くのレストランを取得しonPostExecute、ArrayAdapter 内部リストを置き換えて呼び出しますnotifyDataSetChanged()

于 2012-05-08T16:03:27.477 に答える
0

メインクラスの場所の変更を聞いてください。(重要な)変更を受け取ったら、非同期タスクを開始してレストランに問い合わせます。結果(レストランの配列など)をonPostExecuteに渡し、それに応じてUIを更新します。

たぶん、レストランが照会されている間は更新を無効にするか、照会をキャンセルして、新しい更新ごとに新しい更新を開始します。

于 2012-05-08T15:59:30.173 に答える