NativeScript RadListView: бесконечная прокрутка вверх?

Я использую последнюю версию nativescript (3.1.1) и RadListView. Я пытаюсь добиться бесконечной прокрутки, когда пользователь прокручивает список вверх (аналогично тому, как работают Facebook Messenger, Whatsapp и другие приложения для чата).

Я знаю, что loadOnDemand отлично работает, но работает только тогда, когда пользователь прокручивает страницу вниз. Есть ли способ заставить loadOnDemand работать, когда пользователь прокручивает страницу вверх? Или любой другой обходной путь?

Большое спасибо!


person Shay Friedman    schedule 07.08.2017    source источник
comment
Ни одно из приложений, которые вы указали, не имеет бесконечной прокрутки вверх, например, WhatsApp просто запускается в нижней части чата, и если этот чат длинный, он может выглядеть / ощущаться как бесконечный, но если вы прокрутите достаточно, вы окажетесь в вверху списка. Мне неизвестны какие-либо приложения, которые загружаются по запросу при прокрутке вверх, в этом направлении все приложения, которые вы тянете для обновления, поддерживаются в компоненте RadListView.   -  person Vladimir Amiorkov    schedule 08.08.2017
comment
@VladimirAmiorkov в WhatsApp, посмотрите на ползунок справа, когда вы прокручиваете вверх, вы увидите, что он становится меньше, пока вы прокручиваете вверх - это то, что я называю бесконечной прокруткой вверх   -  person Shay Friedman    schedule 08.08.2017
comment
В RadListView в Android в {N} отображение вертикальной / горизонтальной полосы прокрутки невозможно из-за ограничений, которые исходят от платформы Android + NativeScript при отображении этих полос прокрутки. В Android отображение этих полос прокрутки выполняется только через XML, который в среде NativeScript недоступен, и все собственные операции должны выполняться с помощью кода. Из-за этого ограничения использования только XML мы не можем предоставить какие-либо настройки отображения / скрытия этой полосы прокрутки.   -  person Vladimir Amiorkov    schedule 08.08.2017
comment
Я не собираюсь показывать полосу прокрутки, это был просто пример. Все, что мне нужно, это те же требования, что и у любого чат-клиента: последние сообщения отображаются внизу, и если вы прокрутите вверх, вы получите следующую страницу старых сообщений, как только вы попадете в верхнюю часть (или ближе к верху).   -  person Shay Friedman    schedule 08.08.2017


Ответы (1)


Текущая версия RadListView не обеспечивает такой функции «загрузка по запросу в восходящем направлении», она обеспечивает «тянуть для обновления» и «загружать по запросу снизу».

Вы можете добиться этого с помощью некоторой специальной реализации, используя события прокрутки RadListView, как описано в ветке discourse.nativescript.org здесь. Я опубликую здесь текст ответа также для большей наглядности для сообщества:

На самом деле, я думаю, вы могли бы легко добиться этого, используя события прокрутки, предоставляемые RadListView: http://docs.telerik.com/devtools/nativescript-ui/Controls/NativeScript/ListView/scrolling

В частности, можно использовать прокрутку: http://docs.telerik.com/devtools/nativescript-ui/api/classes/radlistview.html#scrolledevent

Это событие показывает текущее смещение прокрутки списка. Как только он станет 0 или отрицательным, вы можете запустить процесс выборки данных, поднять флаг, что процесс находится в процессе, и сбросить его, как только данные будут получены.

person Vladimir Amiorkov    schedule 09.08.2017
comment
Я знаю, что эта ветка устарела, но я пытаюсь реализовать аналогичную функцию и уже пробовал то, что описано в цитате из Discord, и она работает, но проблема в том, что я использую unshift для добавления элемента в начало массива и список перемещается вверх при добавлении новых элементов. Я хочу, чтобы он оставался в исходном положении, чтобы пользователь мог прокручивать вверх, а не терялся в списке переходов. Есть идеи, как я могу сохранить позицию в списке? Я попробовал scrollToIndex, но он прокручивается, поэтому элемент находится в области просмотра в нижней части списка - мне нужно, чтобы он был в том же месте, где был раньше. - person Andrew Mykhalchuk; 22.04.2021