как определить прокрутку вверх или вниз в radlistview

собственный скрипт rad-list-view не определяет, прокрутка вверх или вниз по списку элементов.

используя собственное событие смахивания сценария, можно получить 4 значения для левого, правого, верхнего и нижнего т. е. 1,2,4,8. но действие смахивания не работает в rad-list-view.

        <lv:RadListView pullToRefresh="true" pullToRefreshInitiated="{{onPullToRefreshInitiated}}"
        scrolled="onScrolled" scrollOffset="scrollOffset" scrollStarted="onScrollStarted" scrollEnded="onScrollEnded"
        id="id_content" row="1" items="{{ source }}" loaded="onLoaded" backgroundColor="transparent"
        itemLoading="onItemLoading" itemTap="onItemTap">

            <lv:RadListView.itemTemplate>
                <StackLayout orientation="vertical" 
                backgroundColor="antiquewhite" margin="5" padding="10" borderWidth="1">

                    <Label fontSize="20" text="{{ name }}"/>
                    <Label fontSize="14" text="{{ name }}"/>

                </StackLayout>
            </lv:RadListView.itemTemplate>

            <lv:RadListView.listViewLayout>
                <lv:ListViewStaggeredLayout scrollDirection="Vertical" spanCount="2"/>
            </lv:RadListView.listViewLayout>

            <lv:RadListView.pullToRefreshStyle>
                <lv:PullToRefreshStyle indicatorColor="red" indicatorBackgroundColor="antiquewhite"/>
            </lv:RadListView.pullToRefreshStyle>

        </lv:RadListView>

    </GridLayout>

how to detect swipe up or down event on radlistview.


person Vikas Acharya    schedule 06.02.2019    source источник


Ответы (1)


Сравните scrollOffset между событиями scrollStarted и scrollEnded, если начальная позиция меньше конечной позиции, тогда пользователь прокрутил вверх, в противном случае - вниз.

let lastOffset;

export function onScrollStarted(args) {
    lastOffset = args.object.getScrollOffset();
}

export function onScrollEnded(args) {
    let currentOffset = args.object.getScrollOffset();
    console.log(currentOffset < lastOffset ? "Up" : "Down");
    lastOffset = currentOffset;
}

Образец игровой площадки

person Manoj    schedule 06.02.2019
comment
это сработало, но не так, как ожидалось. Я анимирую панель действий, т.е. скрываю при прокрутке вниз и показываю при прокрутке вверх. но из приведенного выше ответа, когда я мгновенно прокручиваю вниз, анимация не выполняется. только после завершения прокрутки панель действий будет скрыта. есть ли предложения по этой проблеме .... - person Vikas Acharya; 07.02.2019
comment
Ваш вопрос касался обнаружения прокрутки вверх / вниз, поэтому мне пришлось подумать о лучших вариантах, не затрагивая события слишком много раз. Если вы хотите мгновенно определить, выполняет ли пользователь прокрутку вверх / вниз, просто используйте событие scrolled вместо события scrollEnded. - person Manoj; 07.02.2019
comment
Спасибо за ваш ответ. Я только что изменил событие scrollEnded на событие onScrollDragEnded. это отлично работает. но при анимации я замечаю некоторые сбои, и я также заметил, что анимация не гладкая по сравнению с использованием listView. Спасибо..... - person Vikas Acharya; 07.02.2019