【问题标题】:how to capture listfield scroll to bottom in blackberry 7如何在黑莓7中捕获列表字段滚动到底部
【发布时间】:2013-05-02 20:51:49
【问题描述】:

我有一个包含许多数据的列表字段,首先我从服务器加载 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
    }
}

但我知道如何获得垂直滚动的最大尺寸?

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

【问题讨论】:

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

标签: blackberry


【解决方案1】:

如果您正在使用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。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    相关资源
    最近更新 更多