0
public class CustomAdapter extends BaseAdapter

BaseAdapter を拡張するコードを見つけました

        public View getView(int index, View view, final ViewGroup parent) {

            if (view == null) {
                LayoutInflater inflater = LayoutInflater.from(parent.getContext());
                view = inflater.inflate(R.layout.single_list_item, parent, false);
            }
    }

 TextView textView = (TextView) view.findViewById(R.id.tv_string_data);
        textView.setText(dataModel.getName());

私の質問はいつview == nullですか?

コードが必要な理由 if (view == null) {}

ありがとう

4

4 に答える 4

0

リストビューの場合、すべてのアイテムのビューを提供する必要があり、コンテンツも入力する必要があります。ほとんどの場合、コンテンツが異なるすべてのアイテムで同じビューが繰り返されます。そのため、メソッドで初めてgetView確認します。ビューが null の場合は、ビューを膨らませて内容を入力し、返す必要があります。2 回目は、ビューは null になりません。したがって、別のビューを再利用または提供できます。

于 2013-01-28T05:31:13.420 に答える
0

listView の最初の項目では、View は null になります。最初のアイテムのために膨らませる必要があります。

その他ご不明な点はお気軽にご質問ください。

于 2013-01-28T04:53:23.797 に答える
0

Android は View オブジェクトを再利用して、オブジェクトの作成とメモリの使用を最小限に抑えます。渡された View は null になるか (その場合は作成する必要があります)、またはビューが null 以外 (再利用されたことを意味します) になります。再利用されたビューは、以前に作成した可能性があるビューですが、別の目的に使用できるようになりました。

これの良い例はリストビューです。リストには多くの要素 (たとえば 100 個) が含まれる場合があります。ただし、画面にはリストの 10 項目しか表示されない場合があります。したがって、画面をスクロールすると、画面に表示されなくなったアイテムのビューが再利用のために渡される場合があります。これがリサイクルです。

于 2013-01-28T04:54:06.367 に答える
0

通常、ListView には、表示される行数よりも多くのデータが含まれます。ユーザーがリストをスクロールすると、行とそれに関連付けられたビューが表示領域の外にスクロールされます。行を表す Java オブジェクトは、新しく表示される行に再利用できます。

行を表す View が表示されなくなったと Android が判断した場合、getView() メソッドは convertView パラメータを介してそれを再利用できます。

パフォーマンスが最適化されたアダプターは、新しいデータを convertView に割り当てます。これにより、XML ファイルの拡張と新しい Java オブジェクトの作成が回避されます。

再利用できるビューがない場合、Android は convertView パラメータに null を渡します。したがって、アダプタの実装でこれを確認する必要があります。

于 2013-01-28T05:09:12.837 に答える