-1

カスタム ListView にユーザーの連絡先の写真を表示する必要があります。AsyncTask を介して画像を取得できますが、AsyncTask が終了する前にリストビューが既に読み込まれているため、画像を設定できません。リストビューの各行に対して AsycTask を呼び出しています。AsyncTask が終了した後、Image Uri を手元に持っています。それを行う方法についていくつかのアイデアを教えてください。

これを行うために、カスタム ベース アダプターを使用しています。AsyncTask().get() メソッドを使用すると ImageView にデータを入力できますが、UI スレッドがブロックされ、AsyncTask の目的が無効になります。

4

3 に答える 3

0

ついに問題を見つけることができました.. AsyncTask クラスの onPostExecute() メソッドが doInBackground() の後に実行されません。これが呼び出されない理由は、onPostExecute(Object.. args) のようなオブジェクト パラメータしかとれないためです。イメージ設定コードはすべて onPostExecute() 内に記述されています。

于 2012-12-05T06:47:43.033 に答える
0

onPostExecute()AsyncTaskのメソッドで ListView をロードできます。このようにして、ListView がロードされる前に Async タスクが完了することを保証します。

AsyncTask の実行中にProgressDialogを表示して、データのフェッチが行われていることをユーザーに知らせることができます。

于 2012-12-03T10:01:13.990 に答える
0

使用している によって異なりListAdapterますが、たとえば を使用している場合は、 を呼び出すだけArrayAdapterで、 を使用してすべての (表示されている) ビューがリロードされると思います。ArrayAdapter.notifyDataSetChanged()ArrayAdapter.getView()

より複雑なオプションは、参照をImageViews に保存することですが、リストは表示されているリスト行のビューのみを保持するため、少し注意が必要です。

于 2012-12-03T10:10:36.757 に答える