Будем проверять convertView на "нулевость", и если да, то раздуваем наш ряд - но если он не является нулевым, мы просто используем его повторно. Работа по заполнению содержимого (изображение иконки, текст) одинакова в любом случае. Преимущество в том, что если convertView не является нулевым, мы избегаем потенциально дорогостоящего шага раздувания.
Однако этот подход будет работать не во всех случаях. Например, может оказаться, что у вас есть ListView, для которого некоторые строки будут содержать одну строку текста, а другие - две. В этом случае переработка существующих строк становится сложной задачей, поскольку макеты могут существенно отличаться. Например, если для строки, для которой нам нужно создать представление, требуется две строки текста, мы не можем просто использовать представление с одной строкой текста как есть. Нам придется либо возиться с внутренностями этого представления, либо проигнорировать его и создать новое представление. Конечно, есть способы решить эту проблему, например, сделать вторую строку текста видимой или невидимой в зависимости от того, нужна ли она. На телефоне каждая миллисекунда процессорного времени ценна, возможно, для удобства пользователя, но всегда для срока службы батареи - большее использование процессора означает более быстрый разряд батареи. Учитывая это, особенно если вы новичок в Android, сосредоточьтесь на том, чтобы сначала правильно реализовать функциональность, а затем оптимизировать производительность при втором проходе через ваш код, а не теряться в море представлений, пытаясь решить все за один раз.