2013-08-13 7 views
6

私は50個のアイテムから始まるリストビューを持っています。ユーザーがリストをスクロールするときに、リストの最後に到達する前に、さらに追加したいと思います。私はatEndプロパティを使用して、リストの終わりにいるときを知り、その時点でアイテムを追加しましたが、私が50%〜75%のときに新しいアイテムを追加したいと思いますリストを介して、ユーザーがより多くのデータを待つ可能性が少なくなるようにします。BB10アプリケーションでリストの最後に到達する前にListViewにアイテムを追加するにはどうすればよいですか?

答えて

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); 
     } 
    } 
]} 
+0

私は自分自身でこれを考えなかっただろう – krilovich