Заполнение очень длинного линейного макета пользовательскими представлениями, очень медленное

Я пытаюсь заполнить линейный макет списком настраиваемых представлений, как на картинке:

Layout scheme Для этого я увеличиваю foo.xml в новом объекте View, затем меняю текстовые представления с помощью .setText, а затем добавляю новый View в линейный макет.

Проблема в том, что он очень медленный, даже вне эмулятора, для отображения на моем S9 требуется более 10 секунд.

LinearLayout layout = findViewById(R.id.layout);

while(a<500){
    Person person = new Person();

    View personData = inflater.inflate(R.layout.person, layout, false);
    layout.addView(personData);
    ((TextView) coinData.findViewById(R.id.textView_text_name)).setText(person.name);

    a=a+1
}

Обновлено: Спасибо, ребята! Я попробую RecyclerView прямо сейчас

Почему вы не используете Посмотреть список?

Gent Ahmeti 10.09.2018 11:13

Даже лучше пойти с RecyclerView

AskNilesh 10.09.2018 11:14

Попробуйте использовать Recyclerview, который помогает в работе экрана.

Ankita-user3449434 10.09.2018 11:14

сколько у вас "рядов"? действительно 500? если да, то используйте RecyclerView

pskink 10.09.2018 11:19

это нормально, что он надувается так долго. Также ожидайте, что он выйдет из строя с исключениями OutOfMemory на большинстве устройств. Никогда не раздувайте такие большие представления, разбивайте их на части и используйте вместо этого RecyclerView.

Vladyslav Matviienko 10.09.2018 11:33
1
5
182
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для создания списка используйте RecyclerView, который является просто расширенной версией традиционного ListView.

Вы можете следовать руководству по Recycler View Здесь.

Другие вопросы по теме