3

GetViewDataAdapterクラスに関するAndroidのドキュメントを数回読みました。私が理解していることから、すべてのアイテムが単なるテキストビューであり、すべてのアイテムが画面内にある(スクロールは不可能)同種のリストがある場合、ビューのリサイクルは行われないため、GetViewへの4回の呼び出しを受け取る必要があります。 convertViewがnullです。まあ、これは私に起こることではありません。初回のconvertViewはnullですが、他の3つの作成済みアイテムについても同じです。リストは正しく入力されていますが、なぜこれが発生するのかを理解したいと思います。誰かが助けてくれるなら、私は本当に素晴らしいでしょう。

4

1 に答える 1

4

私は、Android は常にビューをリサイクルしようとしているのではないかと考えています。すべてのビューがリストの表示可能なビューポートに収まるかどうかは問題ではありません。ビューのインフレ/作成は非常にコストがかかるため、Android は可能な限りリサイクルしたいと考えています。

GetView に渡されるビューは、(データ アダプターで定義された) 同じビュー タイプまたは null であることが保証されます。null の場合は、そのビュー タイプの新しいビューを作成する必要があります。それ以外の場合は、渡されたビューを再利用する必要があります。TextView の同種のリストの場合は、非常に簡単です。

if (convertView == null)
{
    TextView tv = new TextView();
    ....
    tv.setText("First Item");
}
else
{
    TextView tv = (TextView) convertView;
    ...
    tv.setText("Recycled Item");
}

簡単にするために、convertView を使用する代わりに常に新しいビューを返すこともできますが、パフォーマンスはそれほど高くありません。

于 2012-08-08T15:03:55.330 に答える