2013-05-02 65 views
0

我有一個listfield有很多數據,起初我從服務器加載10條記錄,我想捕獲滾動已移動到底部的事件,我可以加載更多的記錄從服務器。如何捕獲listfield滾動到底部的黑莓7

我實現ScrollChangeListener:

public class DataListScreen extends MainScreen implements ScrollChangeListener { 
    public void scrollChanged(Manager manager, int newHorizontalScroll, int newVerticalScroll) { 
     System.out.println(getVirtualHeight()); // 480 
     System.out.println(getVisibleHeight()); // 480 
     System.out.println(newVerticalScroll); // 0 - 1259 
    } 
} 

但我知道如何讓垂直滾動最大尺寸?

任何想法?請幫幫我。

+0

在列表底部添加加載更多按鈕。當您點擊該按鈕時,將下10條記錄添加到您的列表中。等等。 – Signare 2013-05-02 08:42:26

回答

2

如果您正在使用ListField,而你通過擴展ListFieldCallback執行風俗畫,那麼你就可以檢測到行集中的drawListRow方法中:

public void drawListRow(ListField lf, Graphics g, int index, int y, int x) { 

     if (lf.isFocus() && lf.getSelectedIndex() == index) { 
      //The selected row is bein repainted 

      if(index == (lf.getSize() - 1)){ 
       //The last row is being focused 
      } 
     } 

    } 

然後你就可以在一個工人要求新元素線。用加載消息阻止GUI。

這是該問題的基本解決方案。在一個真正的專業應用程序中,當用戶即將到達列表末尾(選定行=列表大小 - 適合屏幕的行數)時,您會預先請求新的一批元素。這樣它可以向下滾動而不用等待。您必須在同一批次中處理失敗的請求以及多個用戶發起的請求。