Rumah > Java > javaTutorial > Mengapa Kaedah getView() Android ListView Saya Dipanggil Berbilang Kali dan dalam Pesanan yang Nampaknya Rawak?

Mengapa Kaedah getView() Android ListView Saya Dipanggil Berbilang Kali dan dalam Pesanan yang Nampaknya Rawak?

Linda Hamilton
Lepaskan: 2024-12-10 00:00:18
asal
468 orang telah melayarinya

Why Does My Android ListView's getView() Method Get Called Multiple Times and in an Apparently Random Order?

Mengapa getView Dipanggil Berbilang Kali dan Tanpa Susunan Koheren?

Seperti yang anda perhatikan dalam penyesuai senarai tersuai anda, kaedah getView dipanggil berkali-kali untuk setiap baris, dan ia nampaknya dilakukan secara serampangan. Tingkah laku ini boleh mengelirukan, tetapi ia sebenarnya bukan isu dalam reka bentuk Android.

Mengapa Panggilan Berbilang?

Walaupun kepercayaan umum bahawa getView hanya perlu dipanggil untuk baris yang boleh dilihat, itu tidak berlaku. Item ListView dikitar semula dan digunakan semula semasa anda menatal senarai. Untuk memudahkan kitar semula ini, ListView pra-langkah dan cache paparan untuk baris yang akan kelihatan. Proses pra-ukuran ini memerlukan berbilang panggilan untuk getView untuk menentukan dimensi paparan.

"Tiada Pesanan Koheren"

Kekurangan pesanan yang dirasakan dalam panggilan getView juga merupakan kesan sampingan daripada kitar semula. Apabila baris ditatal keluar daripada paparan, paparan berkaitannya dialih keluar daripada cache dan digunakan semula untuk paparan yang akan kelihatan. Ini bermakna susunan panggilan getView boleh berbeza-beza bergantung pada gelagat menatal pengguna.

Contoh Khusus Anda

Dalam kes anda, anda telah memberikan ListView ketinggian wrap_content. Ini memaksa ListView untuk mengukur beberapa kanak-kanak pada masa susun atur untuk menentukan ketinggiannya sendiri. Akibatnya, ListView mencipta paparan cache untuk kanak-kanak tersebut sebelum anda mula menatal.

Kesimpulan

Mekanisme kitar semula ListView adalah penting untuk mengekalkan prestasi penatalan yang lancar. Walaupun susunan dan bilangan panggilan getView mungkin kelihatan tidak menentu, ia adalah hasil sampingan semulajadi mekanisme ini dan bukan ralat atau pepijat.

Atas ialah kandungan terperinci Mengapa Kaedah getView() Android ListView Saya Dipanggil Berbilang Kali dan dalam Pesanan yang Nampaknya Rawak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan