如何在blackberry 7中捕获列表字段并滚动到底部

如何在blackberry 7中捕获列表字段并滚动到底部,blackberry,Blackberry,我有一个包含许多数据的列表字段,首先我从服务器加载10条记录,我想在滚动到底部时捕获事件,这样我可以从服务器加载更多记录 我实现了ScrollChangeListener: public class DataListScreen extends MainScreen implements ScrollChangeListener { public void scrollChanged(Manager manager, int newHorizontalScroll, int newVer

我有一个包含许多数据的列表字段,首先我从服务器加载10条记录,我想在滚动到底部时捕获事件,这样我可以从服务器加载更多记录

我实现了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
    }
}
但我知道如何获得垂直滚动的最大大小吗


有什么想法吗?请帮助我。

如果您使用的是
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


这是解决问题的基本办法。在真正的pro应用程序中,当用户即将到达列表的末尾时,您会先请求一批新的元素(选定的行=列表的大小-适合屏幕的行数)。这样它就可以无需等待而向下滚动。您必须在同一批中处理失败的请求以及多个用户发起的请求。

在列表底部添加“加载更多”按钮。单击该按钮后,将接下来的10条记录添加到列表中。等等