2013-08-13 2 views
6

나는 50 개의 항목으로 시작하는 listview를 가지고 있는데, 사용자가 목록을 스크롤 할 때 목록의 끝에 도달하기 전에 더 추가하려고합니다. 나는 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