仅存在一个项目时,不会调用addPullToRefresh函数

时间:2017-12-05 21:16:34

标签: codenameone

在我的代码中,我有一个可滚动的容器,我想在用户拉下容器时调用刷新功能。

    venueList = new Container(BoxLayout.y());
    venueList.setScrollableY(true);

    venueList.addPullToRefresh(() -> {
        refresh();
    });

当容器中有多个项目时,这很有效,但是,当只有一个项目或更少项目时,这不起作用。

NetBeans模拟器和ios设备上都会出现此问题。

我目前的解决方法是在列表中添加一个按钮(如果它是空的(在调用Web服务之后)名为" REFRESH",并在单击它时调用refresh()函数)。

2 个答案:

答案 0 :(得分:0)

更新我刚刚使用标签尝试此操作,结果相同:

Form hi = new Form("Hi World", new BorderLayout());
Tabs t = new Tabs();
Container mainContainer = new Container(BoxLayout.y());
mainContainer.setScrollableY(true);
mainContainer.addPullToRefresh(() -> log("Pull..."));
t.addTab("Test Tabs", mainContainer);
hi.add(CENTER, t);
hi.show();

enter image description here

以下原始答案:

这对我来说很好,没有元素所以我猜测有一个不同的问题,比如将容器放在嵌套的可滚​​动层次结构中:

Form hi = new Form("Hi World", new BorderLayout());
Container mainContainer = new Container(BoxLayout.y());
mainContainer.setScrollableY(true);
mainContainer.addPullToRefresh(() -> log("Pull..."));
hi.add(CENTER, mainContainer);
hi.show();

enter image description here

答案 1 :(得分:0)

@Shai,谢谢你指出我正确的方向,它确实最终成了一个嵌套问题。

当我将列表容器添加到Tab容器时,我使用以下代码:

    tabContainer.addTab("Around Me",aroundTabicon,BoxLayout.encloseY(venueList));

请注意,BoxLayout.encloseY导致了问题,我删除了它并最终得到以下内容:

    tabContainer.addTab("Around Me",aroundTabicon,venueList);

它似乎现在正在工作......再次感谢你。