Какова именно функция LayoutInflater?
Когда вы проектируете с использованием XML, все ваши элементы пользовательского интерфейса - это просто теги и параметры. Прежде чем вы сможете использовать эти элементы пользовательского интерфейса (например, TextView или LinearLayout), вам необходимо создать фактические объекты, соответствующие этим элементам xml. Вот для чего нужен надувной насос. Inflater использует эти теги и соответствующие им параметры для создания фактических объектов и установки всех параметров. После этого вы можете получить ссылку на элемент пользовательского интерфейса с помощью findViewById ().
Почему все статьи, которые я прочитал, сначала проверяют, имеет ли convertview значение null? Что это значит, когда он равен нулю, и что это значит, когда это не так?
Это интересно. Видите ли, getView () вызывается каждый раз, когда отрисовывается элемент в списке. Теперь, прежде чем элемент можно будет нарисовать, его нужно создать. Теперь convertView в основном является последним используемым представлением для рисования элемента. В getView () вы сначала раздуваете xml, а затем используете findByViewID () для получения различных элементов пользовательского интерфейса элемента списка. Когда мы проверяем (convertView == null), мы проверяем, что если представление имеет значение null (для первого элемента), то создаем его, иначе, если оно уже существует, повторно используем его, нет необходимости снова проходить процесс надувания . Делает это намного более эффективным.
Вы также должны были столкнуться с концепцией ViewHolder в getView (). Это делает список более эффективным. Что мы делаем, так это создаем зрителя и сохраняем ссылку на все элементы пользовательского интерфейса, которые мы получили после наполнения. Таким образом, мы можем избежать многочисленных вызовов findByViewId () и сэкономить много времени. Этот ViewHolder создается в условии (convertView == null) и сохраняется в convertView с помощью setTag (). В цикле else мы просто получаем его обратно с помощью getView () и повторно используем.
Какой родительский параметр принимает этот метод?
Родителем является ViewGroup, к которой окончательно прикрепляется ваше представление, созданное с помощью getView (). Теперь в вашем случае это будет ListView.
Надеюсь это поможет :)