findViewById против шаблона держателя в адаптере ListView

Я всегда используюLayoutInflater а такжеfindViewById для создания нового элемента вgetView метод.Adapter

Но во многих статьях люди пишут, чтоfindViewById очень очень медленно и настоятельно рекомендуем использовать шаблон View Holder Pattern.

Может кто-нибудь объяснить, почемуfindViewById так медленно? И почему шаблон View Holder быстрее?

И что мне делать, если нужно добавить разные элементы вListView? Должен ли я создавать классы для каждого типа?

static class ViewHolderItem1 {
    TextView textViewItem;
}

static class ViewHolderItem2 {
    Button btnViewItem;
}
static class ViewHolderItem3 {
    Button btnViewItem;
    ImageView imgViewItem;
}

Ответы на вопрос(2)

Ваш ответ на вопрос