如何在到达BB10应用程序列表末尾之前向ListView添加更多项目?

kri*_*ich 6 qt blackberry blackberry-10 blackberry-cascades

我有一个listview,以50个项目开始,我想在用户滚动列表时添加更多内容,但是在它们到达列表末尾之前.我一直在使用atEnd属性知道我什么时候在列表末尾,并在那时添加更多项目,但我宁愿在我50%时开始添加新项目 - 75%的方式通过列表,以便用户不太可能等待更多数据

小智 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);
        }
    }
]}
Run Code Online (Sandbox Code Playgroud)