2013-08-13 33 views
6

Ben 50 öğeleri ile başlar kapalı liste görünümü var ve listeyi kullanıcı kaydırma gibi daha eklemek istiyorum, ancak listede sonuna ulaşmadan. Ben listenin sonunda olduğumda bilmek atEnd özelliğini kullanarak, ve bu noktada daha fazla öğe ekleyerek, ama yerine ben% 50 olduğumda yeni öğeler eklemek başlardım oldum - Yoldan% 75'i Listeden daha fazla veri beklemekten daha az olasıdır.Bir BB10 uygulamasında listenin sonuna ulaşmadan önce bir ListView'e nasıl daha fazla öğe ekleyebilirim?

cevap

7

Liste görünümünün ne kadar olduğunu öğrenmek için onFirstVisibleItemChanged sinyalini kullanabilirsiniz. Mevcut konumunuzu listede almak için ilk modelin ve veri modelinin geçerli boyutunu kullanın. Bu konum sınırlar içinde kalıyorsa (örnek kodumda% 50 ve% 75), veri modeline daha fazla öğe eklemek için kod çalıştırın.

Sinyal, listenin tam olarak% 50'sini yakalayamayacağından kesin bir sayı ayarlamayın; ayrıca, listenin sonuna isabetli bir arıza durumunda listenin sonuna geldiğinizde de kontrol edin. Kullanıcı belirlediğiniz aralığı geçiyor.

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

Güzel cevap teşekkürler! Bunu kendim hiç düşünmezdim – krilovich