3

心配しないでくださいと書かれているこの質問を読みましたが、安心が必要だと思います。

私のカスタム CursorAdapter の bindView:

@Override
public void bindView(View view, Context context, Cursor c) {
    // get handles for views in xml
    ImageView imageView = (ImageView)view.findViewById(R.id.add_lvrow_image);
    TextView titleView = (TextView)view.findViewById(R.id.add_lvrow_title);

    // get data from cursor and "massage" if necessary
    String imageUri = c.getString(c.getColumnIndex(CollectionsTable.COL_IMAGEURI));
    String title = c.getString(c.getColumnIndex(CollectionsTable.COL_TITLE));

    // terrible time getting run-time sizes of imageView, hardcode for now
    int XML_WIDTH = 100;
    int XML_HEIGHT = 100;       

    Log.d(TAG, SCOPE + "bindView called: " +count);
    count++;

    // use static util class
    ImageUtils.loadBitmap(context, imageUri, imageView, XML_WIDTH, XML_HEIGHT);

大きなビットマップをロードするための一連の Android チュートリアルに従っていますが、、、、、、、およびをユーティリティ フォルダーに移動decodSmapledBitmapFromUriしました。calculateInSmapleSizeloadBitmapBitmapWorkerTaskAsyncDrawablecancelPotentialWorkgetBitmapWorkerTask

...だから私は呼び出しloadBitmapており、現在12行あるリストビューに対して77回チェーンしています(ロード時に画面に6回表示され、7回目の表示のヒントが表示されます)。

だから心配する必要はありません。これで問題ありませんか (bindView のこの呼び出し数と、後続のすべてのメソッドの起動)。

お言葉ありがとうございます。

4

2 に答える 2

10

リストビュー xml android:layout_height が「match_parent」でない場合は、次のように変更します。android:layout_height="match_parent"

于 2013-06-07T20:17:51.403 に答える
2

このnewViewメソッドは、新しく作成されたビューごとに呼び出されますが、bindView各ビュー データが対応するビューにバインドする必要があると、 が呼び出されます。get が何度も呼び出される原因の 1 つは、bindViewビューポートの外に出たビューをリサイクルするリストビューのリサイクルです。たとえば、リストビューをスクロールすると、新しいビューがビュー ポートに表示されるたびに が呼び出されbindViewます。loadBitmapリソースを集中的に使用する場合は、呼び出しloadBitmapごとに新しい呼び出しを行わないように、キャッシュ メカニズムを作成することをお勧めしますbindView

于 2013-06-07T19:37:02.357 に答える