Вы можете использовать технику разбиения на страницы, разделяя позиции ур на группы, и каждая группа имеет только три элемента. допустим, у вас есть 30 предметов, поэтому разделите их на 10 групп, и каждая группа имеет такой ключ, как номер страницы, поэтому, когда он открывается в первый раз, вы увидите страницу 1, которая содержит 3 элемента, и прокручивая и используя бесконечный свиток страница 2 и т. д.
это как разделить элементы
int pageNumbers = (int) Math.ceil(items.size() / 3.0);
for (int i = 1; i <= pageNumbers; i++) {
if (i == 1)
firstIndex = 0;
else
firstIndex += 3;
lastIndex=firstIndex+3;
ArrayList<String> itemsPerPage=new ArrayList<>();
for (int j = firstIndex; j < lastIndex; j++)
{
itemsPerPage.add(items.get(j));
}
pages.put(i, items);
}
теперь у вас есть HashMap с элементами на странице и путем внедрения onSrollListener с recyclerView вы можете обновить страницу и получить : page = 2, который содержит 3 элемента и отображает новые 3 элемента с ресайклером
Чтобы убедиться, что скрипт продолжает работать, даже если есть ошибка, используйте блок try / except
.
В блоке except
, чтобы, как указано в вашем запросе, гарантировать, что код проверяет ошибку, снова и снова, вы будете использовать 'recursion функции', чтобы снова запустить функцию изнутри функции:
def periodic_task():
log.msg("periodic task running")
try:
x = 10 / 0 # include 'API calls' here
except: # include 'exception type'
periodic_task()
Хотя, есть много подводных камней с функцией рекурсии , так что будьте осторожны!
Просто обработайте исключение, используйте попытку ... кроме блока вокруг кода, который, как вы знаете, может завершиться неудачей.
def periodic_task():
log.msg("periodic task running")
try:
x = 10 / 0
except Exception as error:
# Here you should at least log the error, exceptions do not should pass silently.
pass