Was genau ist die Funktion des LayoutInflater?
Wenn Sie mit XML entwerfen, sind alle Ihre UI-Elemente nur Tags und Parameter. Bevor Sie diese UI-Elemente verwenden können (z. B. TextView oder LinearLayout), müssen Sie die tatsächlichen Objekte erstellen, die diesen XML-Elementen entsprechen. Dafür ist der Inflater da. Der Inflater verwendet diese Tags und die entsprechenden Parameter, um die tatsächlichen Objekte zu erstellen und alle Parameter festzulegen. Danach können Sie mit findViewById () einen Verweis auf das UI-Element erhalten.
Warum überprüfen alle Artikel, die ich gelesen habe, ob die Konvertierungsansicht null ist oder nicht? Was bedeutet es, wenn es null ist und was bedeutet es, wenn es nicht ist?
Dies ist eine interessante. Sie sehen, getView () wird jedes Mal aufgerufen, wenn ein Element in der Liste gezeichnet wird. Bevor das Objekt gezeichnet werden kann, muss es erstellt werden. Jetzt ist convertView im Grunde die zuletzt verwendete Ansicht zum Zeichnen eines Elements. In getView () blasen Sie zuerst die XML auf und verwenden dann findByViewID (), um die verschiedenen UI-Elemente des Listenelements abzurufen. Wenn wir nach (convertView == null) suchen, überprüfen wir, ob eine Ansicht (für das erste Element) null ist, und erstellen sie dann. Wenn sie bereits vorhanden ist, können Sie sie erneut verwenden, ohne den Aufblasvorgang erneut durchführen zu müssen . Macht es viel effizienter.
Sie müssen auch in getView () auf ein Konzept von ViewHolder gestoßen sein. Dies macht die Liste effizienter. Wir erstellen einen Ansichtsinhaber und speichern den Verweis auf alle UI-Elemente, die wir nach dem Aufblasen erhalten haben. Auf diese Weise können wir vermeiden, die zahlreichen findByViewId () aufzurufen, und viel Zeit sparen. Dieser ViewHolder wird in der Bedingung (convertView == null) erstellt und mit setTag () in der convertView gespeichert. In der else-Schleife erhalten wir es einfach mit getView () zurück und verwenden es wieder.
Was ist der übergeordnete Parameter, den diese Methode akzeptiert?
Das übergeordnete Element ist eine ViewGroup, an die Ihre von getView () erstellte Ansicht endgültig angehängt wird. In Ihrem Fall wäre dies die ListView.
Hoffe das hilft :)