Это с какой точки зрения всё это прям таки невозможно? Криво реализованное легаси я бы сказал. В других языках всё перечисленное есть и без этого синтаксиса.
un1t, потому что ты постоянно вызываешь findViewById. Это тяжёлая операция. Если у тебя 200 элементов, при просмотре всех оно 200 раз вызовется. А если на экран помещается 10, то должно вызваться примерно 10 раз. Гугли паттерн ViewHolder. Для листвью его можно организовать. Но это бессмысленно, потому что есть ресайклер.
un1t, не так важно, сколько их. Листвью устаревшая хрень, тем более, ты не особо правильно его используешь. Ресайклер заставит тебя всё сделать нормально.
List<Integer>
.Формулируй вопросы более четко.