検索

ホームページ  >  に質問  >  本文

android - 如何理解BaseAdapter.getVeiw()参数convertView的null与非null

public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageview;
    if (convertView==null){
        imageview=new ImageView(MyActivity.this);
        imageview.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
        imageview.setPadding(5,0,5,0);

    }else{
        imageview=(ImageView)convertView;
    }

    imageview.setImageResource(imageId[position]);
    return imageview;
}

当一张图片滑进屏幕的时候,调用这个getview()?那么其中第一个if条件null是什么?如何理解这里面的条件语句?

PHP中文网PHP中文网2810日前992

全員に返信(3)返信します

  • 巴扎黑

    巴扎黑2017-04-17 14:34:25

    簡単に言うと、 を再利用するためのものであり、 のたびにレイアウト リソース ファイルから新しいビューを生成する (またはコードを通じて新しいビューを生成する) ことを回避します。
    たとえば、ListViewGridView のように、画面上に N 個の項目を表示できる場合、getView が N 回呼び出され、対応する位置のビューが提供されます。以前に生成したビューを再利用すると効率が向上します。

    android.widget.Adapter ソース コード ファイル内の getView() メソッドのパラメーターの説明:

    @convertView
    可能であれば、再利用する古いビュー 注: 使用する前に、このビューが null でなく、適切なタイプであることを確認する必要があります。

    ただし、それが空であり、適切なタイプであるかどうかを確認する必要があります。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-17 14:34:25

    これは、重複したオブジェクトの作成を避けるためです。より良い再利用のためです

    返事
    0
  • PHP中文网

    PHP中文网2017-04-17 14:34:25

    getView は、リストビューなどに記入するためにアダプターを介してビュー オブジェクトを作成し、convertview がキャッシュされているかどうかを判断します。キャッシュされている場合、新しいビューを作成する必要はなく、再利用することができます。達成。現在、getview メソッドは一般的にこの方法で記述されていません。Android 用に記述してからかなり時間が経ちました。

    返事
    0
  • キャンセル返事