Kaedah getView Penyesuai Paparan Senarai Tersuai: Analisis Mendalam Berbilang Doa
Soalan:
Dalam penyesuai senarai tersuai, mengapa kaedah getView dipanggil beberapa kali, nampaknya dalam keadaan serampangan pesanan?
Jawapan:
Kaedah getView dalam penyesuai senarai tersuai boleh dipanggil berbilang kali dan dalam mana-mana tertib disebabkan sifat sedia ada cara ListView berfungsi. Berikut ialah penjelasan tentang gelagat yang diperhatikan dalam kod yang disediakan:
ConvertViews:
Parameter convertView mewakili paparan yang sedang dikitar semula untuk digunakan semula. Apabila convertView bukan nol, ia menunjukkan bahawa ListView telah mengukur dan melambung pandangan untuk kedudukan yang sepadan. Daripada mencipta paparan baharu, penyesuai menggunakan semula paparan kitar semula ini.
Perintah Invocation getView:
Tiada pesanan terjamin di mana getView akan dipanggil untuk kedudukan yang berbeza . ListView mungkin memanggil getView untuk berbilang kedudukan walaupun sebelum input pengguna diterima. Tingkah laku ini adalah perkara biasa apabila ListView mempunyai ketinggian ditetapkan kepada wrap_content, seperti dalam reka letak XML yang diberikan.
Mengapa getView Dipanggil Berbilang Kali:
getView dipanggil beberapa kali untuk setiap kedudukan disebabkan oleh proses pengukuran ListView. Apabila ListView pertama kali dipaparkan, ia mengukur beberapa kanak-kanak daripada penyesuai untuk menentukan ketinggiannya sendiri. Proses pengukuran ini mencetuskan panggilan getView untuk bahagian senarai yang kelihatan.
ConvertViews yang tidak dapat diramalkan:
Semasa pengguna menatal, ListView mungkin mengitar semula paparan yang tidak kelihatan lagi dan menggunakannya semula untuk jawatan baharu. Ini menerangkan sebab parameter convertView boleh menjadi bukan nol walaupun sebelum pengguna telah menatal.
Kesimpulan:
Walaupun ia mungkin kelihatan luar biasa, gelagat getView dipanggil berkali-kali dan dalam susunan yang tidak menentu bukanlah satu isu. Ia adalah sebahagian daripada cara ListView mengoptimumkan prestasi dengan menggunakan semula paparan dan mengukur hanya subset kanak-kanak untuk reka letak awalnya.
Atas ialah kandungan terperinci Mengapakah Kaedah `getView` ListView saya Dipanggil Berbilang Kali dan dalam Susunan Nampaknya Rawak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!