1

gridViewのパフォーマンスを向上させるにはどうすればよいですか?スクロールがスムーズではありません。

これが私のコードです:

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

        View MyView;

        // Inflate the layout
        LayoutInflater li = ((Activity) MyContext).getLayoutInflater();

        MyView = li.inflate(R.layout.gallery_adapter, null);
        ImageButton imageFolders = (ImageButton) MyView.findViewById(R.id.folder);


        try {

            imageFolders.setImageBitmap(bMap);
            imageFolders.setOnClickListener(this);
            imageFolders.setId(products.get(position).getId());
        } catch (Exception e) {

        }

        MyView.setLayoutParams(70, 70);
        return MyView;
    }

このgridViewには200枚の画像がありますが、パフォーマンスは非常に悪いです。

4

6 に答える 6

4

次のようにコードを変更できます。

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

    View MyView;

    if(convertView==null) 
    {
        // Inflate the layout
        LayoutInflater li = ((Activity) MyContext).getLayoutInflater();

        MyView = li.inflate(R.layout.gallery_adapter, null);
        ImageButton imageFolders = (ImageButton) MyView.findViewById(R.id.folder);


        try {

            imageFolders.setImageBitmap(bMap);
            imageFolders.setOnClickListener(this);
            imageFolders.setId(products.get(position).getId());
        } catch (Exception e) {

        }

        MyView.setLayoutParams(70, 70);
    }
    else
        MyView = convertView;
    return MyView;
}

すでに読み込まれている画像は再読み込みされません。この可能性を試しましたか?

于 2012-05-14T22:06:04.867 に答える
0
  1. ビューをリサイクルします。レイアウトを拡張し、レイアウト パラメータを 1 回だけ設定します。
  2. メインスレッドでディスク/ネットワークからビットマップをロードしないようにしてください。
  3. グリッド アイテム レイアウト (R.layout.gallery_adapter) のビュー階層を簡素化します。
  4. アプリのマニフェストでハードウェア アクセラレーションが無効になっていないことを確認します。
  5. オーバードロー (複数の背景を重ねて描画) をしていないことを確認してください。
于 2015-07-09T11:32:10.743 に答える
-3

細部の画像を取得するか、より高速な電話を取得します。
そうするか、グリッドビューをプログラムして、画像が表示され始めたときにのみ画像が読み込まれるようにします。

于 2012-05-14T20:29:02.040 に答える