LayoutInflater'ın işlevi tam olarak nedir?
XML kullanarak tasarım yaptığınızda, tüm UI öğeleriniz yalnızca etiketler ve parametrelerdir. Bu UI öğelerini (ör. TextView veya LinearLayout) kullanmadan önce, bu xml öğelerine karşılık gelen gerçek nesneleri oluşturmanız gerekir. Şişirici bunun için. Şişirici, gerçek nesneleri oluşturmak ve tüm parametreleri ayarlamak için bu etiketleri ve bunlara karşılık gelen parametreleri kullanır. Bundan sonra, findViewById () kullanarak UI öğesine bir başvuru alabilirsiniz.
Neden okuduğum tüm makaleler, convertview'in boş olup olmadığını kontrol ediyor? Boş olduğu zaman ne anlama geliyor ve olmadığı zaman ne anlama geliyor?
Bu ilginç bir tanesidir. Gördüğünüz gibi, listedeki bir öğe her çizildiğinde getView () çağrılır. Şimdi, nesnenin çizilebilmesi için yaratılması gerekiyor. Şimdi convertView temelde bir öğeyi çizmek için kullanılan son görünümdür. GetView () 'de önce xml'yi şişirirsiniz ve ardından listitem'in çeşitli UI öğelerini almak için findByViewID () kullanırsınız. (ConvertView == null) 'u kontrol ettiğimizde, yaptığımız şey, eğer bir view null ise (ilk öğe için) o zaman onu oluşturmaktır, aksi takdirde, eğer zaten varsa, yeniden kullanmak, tekrar şişirme sürecinden geçmeye gerek yoktur. . Çok daha verimli hale getirir.
Ayrıca getView () içinde bir ViewHolder kavramıyla karşılaşmış olmalısınız. Bu, listeyi daha verimli hale getirir. Yaptığımız şey bir görüntü sahibi oluşturmak ve şişirdikten sonra elde ettiğimiz tüm UI öğelerine referansı depolamaktır. Bu şekilde, çok sayıda findByViewId () 'yi çağırmaktan kaçınabilir ve çok zaman kazanabiliriz. Bu ViewHolder (convertView == null) koşulunda oluşturulur ve setTag () kullanılarak convertView'de saklanır. Else döngüsünde, getView () kullanarak onu geri alırız ve yeniden kullanırız.
Bu yöntemin kabul ettiği üst parametre nedir?
Üst öğe, getView () tarafından oluşturulan görünümünüzün sonunda eklendiği bir ViewGroup'dur. Şimdi sizin durumunuzda bu ListView olacaktır.
Bu yardımcı olur umarım :)