我有一个以50个项目开始的列表视图,我希望在用户滚动列表时添加更多项目,但是在它们到达列表末尾之前。我一直在使用atEnd属性知道我什么时候在列表末尾,并在那时添加更多项目,但是当我50%时,我宁愿开始添加新项目 - 75通过列表的百分比,以便用户不太可能等待更多数据
答案 0 :(得分:7)
您可以使用onFirstVisibleItemChanged信号查看列表视图的详细信息。使用firstvisibleitem和数据模型的当前大小来获取列表中的当前位置。如果该位置在您设置的边界内(在我的示例代码中为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);
}
}
]}