0

画像の読み込み中にアプリケーションがハングしないように、すべてのリスト項目の画像を個別の非同期タスクに読み込んでいます。

リストを下にスクロールすると問題が発生します新しいリストアイテムの画像は、ドリルダウンすると画像効果が置き換えられました

たとえば、デフォルトで 5 つの listitems が画面に収まる場合、次に表示される listitem は実際には表示されていた前の listitem のリサイクルです。そのため、新しい画像が読み込まれるまで、前の listitem の画像も含まれています。画像が置き換えられ、リサイクルのために画像が置き換えられるたびにスクロールアップまたはスクロールダウンを行うと、ユーザーは画像の置き換え効果を見つけました...

スクロールダウンまたはアップ時にリストアイテムをリサイクルしないようにAndroidに依頼して、画像の置き換え効果がないようにする方法はありますか。

どんな良い提案も歓迎します

代替テキスト http://www.freeimagehosting.net/uploads/8237cbd584.jpg

4

1 に答える 1

1

私の理解では、アダプターから getView() メソッドを使用して、リスト項目に独自のレイアウトを提供します。したがって、おそらく次のようなものがあります。

public View getView(int position, View convertView, ViewGroup parent) {

        if(null == convertView){
            convertView = mInflater.inflate(R.layout.row, null);
            //...               
        }
        //... setting new values for your widgets
        return convertView
    }

その場合は、アイテムをリサイクルする必要があります。このような実装により、ガベージ コレクターが頻繁に呼び出されるのを防ぐことができますが、問題がなく、GC に耐えることができる場合は、if(null==convertView) を取り除き、アイテムを最初から構築することができます - 毎回 getView メソッドが呼び出されます。

しかし、おそらくそれは良い考えではありません。リサイクルされたアイテムから画像ウィジェットを取得し、一時的な画像を設定してから、非同期タスクを開始して適切な画像をダウンロードする方が良いでしょう。
よろしく!

于 2009-12-17T07:53:40.213 に答える