0

ListView があり、次のコードを挿入して、BaseAdapter の getView() プロセスを確認します。

@Override

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

    Log.d("getView()","Fetching Row: " + position);
    ...
}

リストをゆっくりと下にスクロールしていると、奇妙なことが起こっていることに気付きます。リストの位置が 40 ~ 50 であっても、位置 0 ~ 7 で getView() を呼び出しています。私のログは次のようになります。

05-14 11:46:13.989: I/getView()(18681): Fetching Row: 45
05-14 11:46:14.039: I/getView()(18681): Fetching Row: 0
05-14 11:46:14.049: I/getView()(18681): Fetching Row: 1
05-14 11:46:14.049: I/getView()(18681): Fetching Row: 2
05-14 11:46:14.049: I/getView()(18681): Fetching Row: 3
05-14 11:46:14.059: I/getView()(18681): Fetching Row: 4
05-14 11:46:14.059: I/getView()(18681): Fetching Row: 5
05-14 11:46:14.059: I/getView()(18681): Fetching Row: 6
05-14 11:46:14.069: I/getView()(18681): Fetching Row: 7
05-14 11:46:14.320: I/getView()(18681): Fetching Row: 46
05-14 11:46:14.430: I/getView()(18681): Fetching Row: 0
05-14 11:46:14.430: I/getView()(18681): Fetching Row: 1
05-14 11:46:14.430: I/getView()(18681): Fetching Row: 2
05-14 11:46:14.430: I/getView()(18681): Fetching Row: 3
05-14 11:46:14.430: I/getView()(18681): Fetching Row: 4
05-14 11:46:14.430: I/getView()(18681): Fetching Row: 5
05-14 11:46:14.430: I/getView()(18681): Fetching Row: 6
05-14 11:46:14.430: I/getView()(18681): Fetching Row: 7

ご覧のとおり、行 45 と行 46 の間で、毎回行 0 から 7 に対して getView() を呼び出しています。これはすべてのリスト項目で発生します。これがパフォーマンスの問題を引き起こしているのではないかと心配しています。

なぜこうなった?そして、これは正常な動作ですか?

4

2 に答える 2

5

リストビュー xml で、layout_height を次のように変更します。android:layout_height="match_parent"

于 2013-05-14T19:13:56.427 に答える