Я просто хочу иметь возможность отображать список контактов (даже без связи с сервером) так, как он отображается в собственном приложении "Контакты" на телефоне.
У меня как 1500 контактов, и когда я пытаюсь загрузить представление рециркулятора, все элементы одновременно, оно сильно отстает на 2 - 3 секунды.
Я добился загрузки большего количества товаров, но с помощью панели загрузки, и это не то, что я хочу.
Я уже пробовал Threads, Executors, postOnUIThread (), handler.post () и даже AsyncTask -> Override -> doOnBackground. Ничего не работает.
private class CustomTask extends AsyncTask<Void, Void, Void> {
int inserted;
@Override
protected Void doInBackground(Void... param) {
//Do some work
try {
lcf.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
((BaseActivity) lcf.getActivity()).showProgressDialog();
}
});
int currentSize = contactsLoaded.size();
for (inserted = 0; inserted < lcf.getController().getContacts().size() && contactsLoaded.size() < lcf.getController().getContacts().size(); inserted++) {
contactsLoaded.add(lcf.getController().getContacts().get(currentSize + inserted));
notifyItemRangeInserted(contactsLoaded.size() - 1, inserted);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void param) {
//Print Toast or open dialog
//notifyItemRangeInserted(contactsLoaded.size() - 1, 0);
if(!lcf.getController().isSelectedAffiliated()){
lcf.disclaimerLayout.setVisibility(View.VISIBLE);
}else{
lcf.disclaimerLayout.setVisibility(View.GONE);
}
lcf.isLoading=false;
((BaseActivity) lcf.getActivity()).hideProgressDialog();
}
}
Этот код находится в моем адаптере, "lcf" является ссылкой на фрагмент. Если я использую уже загруженный список, сохраненный на контроллере (который я получаю из ссылки на фрагмент), а затем просто вызываю notifyDataSetChanged (), это LAGS как ад. Таким образом, с помощью этой пользовательской задачи я пытался загрузить каждый элемент и уведомить его один за другим о фоновой задаче, надеясь, что это заставит элементы всплывать быстро и последовательно, не мешая потоку пользовательского интерфейса, чтобы не заморозить экран. Не работает У меня нет вариантов сейчас. Я перепробовал все.