我有一个包含许多数据的列表字段,首先我从服务器加载 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
method:
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。
这是解决问题的基本方法。在真正的专业应用程序中,当用户即将到达列表末尾时,您会预先请求一批新元素(所选行 = 列表大小 - 适合屏幕的行数)。这样它就可以向下滚动而无需等待。您必须处理失败的请求以及同一批次中多个用户发起的请求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)