0

私のコードでは、私はこのようなことをします

// Start AsyncTask - And load Network data into an Object
// Set ListAdapter with Object from Task.

ただし、が設定されるTask前に が完了することはないため、 です。ListAdapternull

onPostExecuteこれTaskは独自のクラスであり、他の領域で使用されるため、アダプタを に設定することはできません。

Asyncここでの主な問題は の部分だと思いますTask。これを行うためのより良い方法はありますか?

4

3 に答える 3

2

リスナー インターフェイスを作成し、アクティビティにそのインターフェイスを実装させることができます。ayntask が完了すると、つまり onPostExecute 呼び出しで、インターフェイスのメソッドとアクティビティが登録されている場合はコールバックを受け取ります。

于 2013-05-23T17:35:36.880 に答える
1

コメントを回答に変換する

たとえば、aと aまたはあなたが選択したように、これから必要なものを取得する aconstructorを in yourに作成できます。次に、のインスタンスを作成するときに、これらを渡すことができますAsyncTaskparamsActivityContextListAdapterbooleanAsyncTaskparams

MyTask myTask = new MyTask(MainActivity.this, booleanVar);  // passing Context and boolean
myTask.execute();

次にAsyncTask、特定の変数が存在するかどうかをnull確認するか、値を確認しbooleanて、何をすべきかを決定できますonPostExecute()

次に、それを使用する必要がある他の のconstructor別のセットを処理する を使用できます。paramsActivities

于 2013-05-23T18:42:48.917 に答える
0

ListView の作成直後に、ListView のアダプターを常に設定します (通常は、レイアウトに応じて onCreate または onCreateView で)。

アダプターの中身は別問題です。アダプターを最初は空にし、実際のデータを onPostExecute などの AsyncTask 完了時にのみ追加することができます (またそうすべきです)。その後、onPostExecuteでもadapter.notifyDataSetChanged()を呼び出してオブジェクトを表示します。

于 2013-05-23T18:43:01.873 に答える