0

現在、カスタム アダプターを使用して、ListView の行ごとに ImageView と 2 つの TextView を表示しています。

アダプターのオーバーライドされた getView 内に、ImageView の次のコードがあります。

final ImageView img = (ImageView) view.findViewById(R.id.rowImg);

new Thread(new Runnable() {
    public void run() {
        final BitmapDrawable b = downloadAvatar(urlToDownload);
        img.post(new Runnable() {
            public void run() {
                img.setImageDrawable(b);
            }
        });
    }
}).start();

downloadAvatar メソッドは、基本的に AndroidHttpClient と HttpGet を使用するだけです。上記の方法は機能しますが、私の質問は、どのように最適化するのですか? スクロールが途切れます。おそらく getView() を呼び出して、表示可能な領域に入るたびに画像をダウンロードしていることはわかっています。任意のヒント?

4

4 に答える 4

1

以下の遅延読み込みリストビューのソースリンクとユニバーサルイメージローダーの例を参照してください。役立つ場合があります。

リストビューの遅延読み込み

Android ユニバーサル イメージ ローダー

于 2012-07-09T12:44:40.887 に答える
0

あなたの場合、ダウンロードされるとそれらの画像をキャッシュする「画像の遅延読み込み」と呼ばれるものを実行する必要があります。これをチェックしてください:ListViewでの画像の遅延読み込み

于 2012-07-09T12:36:32.760 に答える
0

ignition-libraryと呼ばれるコンポーネントを使用することをお勧めします。これは、非同期でURLイメージをロードし、ライブラリはそれらのイメージのキャッシュも保持するため、行RemoteImageViewを再作成するたびにダウンロードされるわけではありません。ListView

私はそれを使用していますが、非常に便利で堅牢だと思います。

于 2012-07-09T12:36:55.500 に答える
0

ここにオプションがあります:

getView現在のイメージがダウンロードされているかどうかを内部で確認します。まだダウンロードしていない場合は、ダウンロードして任意のディレクトリに保存します。そのディレクトリに存在する場合は、ロードするだけです。

画像のサイズと数に応じて、可視 (およびおそらく可視の上下に最も近い不可視) アイテムに必要な画像オブジェクトを格納するために、ある種のキャッシュを作成することもできます。

于 2012-07-09T12:45:40.760 に答える