Контекст
Я делаю заказную таблицу лидеров через ui::ListView
. Каждый элемент таблицы лидеров - ui::Button
. Когда пользователь нажимает на какую-то позицию, он получает подробную статистику по этой позиции в таблице лидеров. Я использую Cocos2d-x ver. 3.8.1. Для ясности, вот мой код для этого:Как определить конец ScrollView в Cocos2d-x?
auto lvLeaderboard = ListView::create();
for (int j = 0; j < linesCount; j++)
{
Button* btnSingleUser = Button::create("btn.png”);
btnSingleUser->setTag(j + offsetResult);
btnSingleUser->addTouchEventListener([&](Ref* sender, Widget::TouchEventType type){
switch (type)
{
case ui::Widget::TouchEventType::ENDED:
{
Button* currentButton = (Button*)sender;
this->pressedUserStatistic(currentButton->getTag());
break;
}
default:
break;
}
});
lvLeaderboard->pushBackCustomItem(btnSingleUser);
…
}
lvLeaderboard->setItemsMargin(0);
lvLeaderboard->setGravity(ListView::Gravity::CENTER_HORIZONTAL);
lvLeaderboard->setSize(Size(winSize.width, _height));
lvLeaderboard->setPosition(Point(0, 0));
listContainer->addChild(lvLeaderboard);
Все работает отлично, я могу прокрутить список лидеров, и посмотреть статистику каждого пользователя, которому я нажимаю.
Задача
Но есть одна проблема. Мне нужно загрузить следующую часть данных, когда пользователь достигнет конца списка (я загружаю результаты по 50 строк за раз). Но я не могу найти переменную, метод или обработчик, который работает, когда пользователь достигает первого или последнего элемента ListView.
Я пытался сделать
ui:ListViewScrollView наследует, поэтому я пытался найти какие-то методы, в обоих из них. Все, что я пробовал, пусть не результат, который я хочу.
Вопрос
Как определить, когда пользователь достигает первого и последнего элементов в ListView
? Или, если это невозможно, как определить конец и начало ScrollView
?
Спасибо за ответ! Ваш метод работает. Но я не могу найти 'getBottommostItemInCurrentView()' в 'ui :: ListView'. Я нашел только 'getBottomBoundary()', 'getBottomMargin()' и 'getBottomInParent()'. Все они вернули 'float', а не' Button * '. Пожалуйста, не могли бы вы объяснить, что это за метод. – alc77
Метод getBottommostItemInCurrentView доступен с V9.0, поэтому вы можете либо перейти на V9.0, либо скопировать выше 3 статических метода в свой класс и вызвать getBottommostItemInCurrentView с параметром виджета ListView ListView. – bunty
Спасибо большое! Оно работает! Странно, я не могу найти этот метод в [API Reference] (http://www.cocos2d-x.org/reference/native-cpp/V3.9/index.html). Вероятно, документация не обновлена. – alc77