Есть ли какая-либо известная привычка быстро загружать Android ListViews? - PullRequest
0 голосов
/ 02 марта 2019

Чтобы в общих чертах объяснить ситуацию:
Я планирую создать приложение для школьного расписания для учащихся.Мое приложение в настоящее время является просто основной функцией MainActivity, которая имеет боковой ящик, и если вы щелкаете по элементу, он раздувает выбранный фрагмент.Мой вопрос касается списка тем, над которым я сейчас работаю.При нажатии на FAB во фрагменте «SubjectsFragment» открывается действие, в которое можно добавлять темы.После того, как тема была добавлена, она отображается в «SubjectsFragment» - так что, довольно просто.У меня уже есть вся логика базы данных и я создал собственный адаптер.Но эти вещи даже не вызывают проблемы.

Теперь к моей проблеме:
Когда я открываю фрагмент, он запаздывает на очень небольшое время при заполнении ListView.Хотя это занимает немного времени, это, безусловно, заметно, что означает, что UIThread заблокирован на этот раз.
Я не нашел никаких реализаций, отличных от той, которую я сейчас использую, и мне интересно, есть ли другиеспособы заполнения ListView.Использование AsyncTask не имеет смысла, поскольку заполнение ListView по-прежнему происходит в UIThread.
Вот небольшой фрагмент кода моей реализации:

mListView = rootView.findViewById(R.id.subjectsListView);
ArrayList<Subject> subjectList = new ArrayList<>();
subject = new Subject("A", "B", "C", "D");
for (int i = 0; i < 100; i++) { //for loop just to add 100 items
    subjectList.add(subject);
}
ListAdapterView adapter = new ListAdapterView(getActivity(), R.layout.fragment_subjects_listitem, subjectList);
mListView.setAdapter(adapter);

Ради понимания моей проблемы этоне обязательно знать, как работает мой адаптер, так как это также происходит с предустановленными адаптерами Android Studio.В этом фрагменте кода 100 элементов добавляются в список.Но, к сожалению, микро-лаги также происходят только с 20 пунктами.

Есть ли какой-нибудь лучший / иной способ реализовать это и не заставить его отставать?Извините, если это звучит глупо, но я все еще плохо знаком с программированием на Android и всегда учусь.

1 Ответ

0 голосов
/ 02 марта 2019

ListView - это старый способ создания списка в Android.Существует лучший / более быстрый способ, RecyclerView . Пример 1 , Пример 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...