Codenameone在不重新加载页面的情况下刷新图像列表

Codenameone在不重新加载页面的情况下刷新图像列表,codenameone,Codenameone,我正在开发一个应用程序,需要创建一个动态图像库,在几分钟后刷新。当刷新发生时,有三件事应该发生,而不需要重新加载页面 1) 应删除过时的图像 2) 应添加新图像 3) 非过时图像应保留(不重新加载) 4) 图像应该堆叠在一起,因为它将主要用于平板电脑 我正在查看Boxlayout或FlowLayout,我可以添加图像,但我不确定如何动态删除它。我可以为图像组件设置UUID,但无法基于UUID获取组件以将其删除。如何根据添加到表单中的UUID获取组件? 这是正确的方法吗?或者已经有内置组件可以实现

我正在开发一个应用程序,需要创建一个动态图像库,在几分钟后刷新。当刷新发生时,有三件事应该发生,而不需要重新加载页面

1) 应删除过时的图像 2) 应添加新图像 3) 非过时图像应保留(不重新加载) 4) 图像应该堆叠在一起,因为它将主要用于平板电脑

我正在查看Boxlayout或FlowLayout,我可以添加图像,但我不确定如何动态删除它。我可以为图像组件设置UUID,但无法基于UUID获取组件以将其删除。如何根据添加到表单中的UUID获取组件? 这是正确的方法吗?或者已经有内置组件可以实现这一点

我看到了这个


使用
BoxLayout.Y_轴
容器
实际上非常简单。创建要添加到长方体布局的图像组件时,请执行以下操作:

myImageComponent.putClientProperty("imageId", imageId);
然后,当您使用回调刷新列表时,只需执行以下操作:

for(Component cmp : parentContainer) {
    String id = (String)myImageComponent.getClientProperty("imageId");
    if(!existsInNewList(id)) {
       cmp.remove();
    }
}

更新完容器后,只需调用
animateLayout(200)
revalidate()
来刷新UI。

这样做有效,animateLayout(200)似乎提供了更好的UI体验是的,这只是容器中可以做的、列表中无法做的事情之一。。。仅供参考,当答案正确时,你应该接受它,理想情况下,对其进行投票,这将为你和回答问题的人提供非常有用的分数。您可以通过单击答案旁边的复选框来接受答案。接下来的问题是,获取数据的最佳做法是什么。该应用程序将运行(不在后台),图像将每隔15秒提取一次。我曾想过使用fetch,但我阅读了文档,在IOS中,它只是一种视觉通知,需要人工交互。“如果应用程序正在运行或用户单击了推送通知弹出窗口,iiOS将只向应用程序发送推送通知!”。轮询是更好的选择还是有其他方法?没有理由将其用于前台运行的东西。只需使用连接请求并获取图像。当连接请求的
postResponse
回调完成时,检查是否已过15秒,如果已过15秒,请再次发出请求,如果未在剩余时间内安排计时器。请注意,这可能是电池耗电,因此如果
Display.isMinimized()
返回true,我建议将其挂起。
for(Component cmp : parentContainer) {
    String id = (String)myImageComponent.getClientProperty("imageId");
    if(!existsInNewList(id)) {
       cmp.remove();
    }
}