如何获得Blackberry 10本地的listview位置

时间:2014-08-18 04:48:11

标签: listview qml native blackberry-10 listitem

我正在尝试将数据从Web服务加载到列表视图中,并且我已成功将该特定数据加载到我的列表视图中。

但我遇到的问题是我在列表视图中每页获得10个数据,当用户向下滚动时,它会尝试加载更多数据,当它将更多数据加载到列表视图中时,列表视图开始显示来自第一个数据本身,而不是第一个数据,我想显示当前数据。

实施例。当用户滚动以获取更多数据 page - 2 时,它将加载另外10个数据,现在list-view包含20个数据,因此当前用户位于第10个位置并加载更多数据,因此list-view应显示从第11个数据开始,而不是从第1个数据本身再次开始,当用户加载30个数据时,它应该开始显示来自21个数据的数据,但同样从第1个数据开始。

所以基本上我的问题是如何知道列表项的位置并直接将用户移动到该特定位置,以便用户直接看到当前数据。

我正在尝试的代码是。

onScrollingChanged: {
              if (atEnd && scrolling == false
                   if (_app.powerDivert == 1) {
                          _app.powerDivert += 1;
                    }
                    if (connInfo.isConnected()) {
                              getPagewisePromotionList(_app.powerDivert);
                    }
                 }
             }

其中powerDivert将递增页面计数, getPagewisePromotionList 这是我调用的函数,用于向列表视图中添加更多数据。

我也试过了。

  onFirstVisibleItemChanged: {
            if (position < firstVisibleItem) {
             console.log("Scrolling Down")
             var size = _app.dataModel.size();
             var percent = firstVisibleItem / size * 100;
             console.log("Percent: " + percent);
                  if (percent > 60) {
                            if (_app.powerDivert == 1) {
                            _app.powerDivert += 1;
                           }
                           if (connInfo.isConnected()) {
                               console.log("inside percentage");
                               getPagewisePromotionList(_app.powerDivert);
                           }
                       }
                      } else if (position > firstVisibleItem) {
                       console.log("Scrolling Up");
                    }
                   position = parseInt(firstVisibleItem);
                }

以及此代码

onScrollingChanged: {
        if (ListItem.indexInSection + 5 == ListItem.indexPath) {
               if (_app.powerDivert == 1) {
                      _app.powerDivert += 1;
                }
               if (connInfo.isConnected()) {
                       getPagewisePromotionList(_app.powerDivert);
              }
         }
}

但它给我的错误就像

Error: Accessing ListItem.indexInSection on a node that is not the root node in a list item visual. Try prefixing with the id of the item visual root node.
Error: Accessing ListItem.indexPath on a node that is not the root node in a list item visual. Try prefixing with the id of the item visual root node.

如果您还有其他需要,请告诉我。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

这取决于你。如何从服务加载数据。如果您正在获取数据页面,那么您可以使用它:

var indexPosition = (_app.powerDivert - 1) * 10;
lstPromotionListOnline.scrollToItem([ indexPosition ], ScrollAnimation.None);

powerdivert 是您的page_number lstPromotionListOnline 是您的listview ID

请查看此link以供参考。