我有一个 ListView ,从 50 个项目开始,我想在用户滚动列表时添加更多项目,但在到达列表末尾之前。我一直在使用atEnd属性来了解我何时位于列表末尾,并在此时添加更多项目,但我宁愿在列表完成 50% - 75% 时开始添加新项目,以便用户不太可能等待更多数据
最佳答案
您可以使用onFirstVisibleItemChanged发出信号以了解您在 ListView 中的位置。使用第一个可见项和数据模型的当前大小来获取列表中的当前位置。如果该位置在您设置的边界内(在我的示例代码中为 50% 和 75%),则运行代码以向数据模型添加更多项目。
不要设置确切的数字,因为信号可能无法准确捕获列表中 50% 的路径,并且您还应该检查何时到达列表末尾,作为故障保护,以防万一用户飞过您设置的范围。
ListView {
dataModel: listDataModel
objectName: "listView"
attachedObjects: [
ListScrollStateHandler {
property int position
id: scrollStateHandler
onScrollingChanged: {
if (atEnd) {
//code to run if you hit the end of the list
}
}
onFirstVisibleItemChanged: {
if (position < firstVisibleItem) {
console.log("Scrolling Down")
var size = listDataModel.size();
var percent = firstVisibleItem / size * 100;
console.log("Percent: " + percent + "%");
if (50 < percent < 75) {
//do stuff
}
} else if (position > firstVisibleItem) {
console.log("Scrolling Up");
}
position = parseInt(firstVisibleItem);
}
}
]}
关于qt - 在 BB10 应用程序上,如何在到达列表末尾之前向 ListView 添加更多项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18216552/