codenameone 选择器 ComboBox 的替代品

codenameone Picker Alternative to ComboBox

Codename One 我的脚弄湿了。我研究了更多其他选项,例如跨平台的 XamarinPhoneGapIonic,但我有点迷上了 Codename one,因为它只编码一次,而 运行任何地方。

我一直在浏览 ui 个元素,但我有点受阻于填充 combobox(备选方案是 Picker

假设我将商店作为值对 (storeIdstoreName)。我想在 Picker 中显示 storeName 但保留 storeId 作为值参考。 选择商店后,我想将 storeId 传递给 API 调用。
这可能吗。这可能是一个非常简单的问题,但似乎有点难以实现(我真的是移动新手)。

谢谢。

我们的建议是avoid ComboBox。这是一种 UI 模式,在 iOS 上本机不存在,在现代手机上会感觉很陌生。它存在于代号一中。

在上述示例的这段代码中,您可以获得与复杂的多字段组合框类似的效果:

Form hi = new Form("Button", BoxLayout.y());

String[] characters = { "Tyrion Lannister", "Jaime Lannister", "Cersei Lannister"};
String[] actors = { "Peter Dinklage", "Nikolaj Coster-Waldau", "Lena Headey"};
int size = Display.getInstance().convertToPixels(7);
EncodedImage placeholder = EncodedImage.createFromImage(Image.createImage(size, size, 0xffcccccc), true);
Image[] pictures = {
    URLImage.createToStorage(placeholder, "tyrion","http://i.lv3.hbo.com/assets/images/series/game-of-thrones/character/s5/tyrion-lannister-512x512.jpg"),
    URLImage.createToStorage(placeholder, "jaime","http://i.lv3.hbo.com/assets/images/series/game-of-thrones/character/s5/jamie-lannister-512x512.jpg"),
    URLImage.createToStorage(placeholder, "cersei","http://i.lv3.hbo.com/assets/images/series/game-of-thrones/character/s5/cersei-lannister-512x512.jpg")
};

MultiButton b = new MultiButton("Pick A Lanister...");
b.addActionListener(e -> {
    Dialog d = new Dialog();
    d.setLayout(BoxLayout.y());
    d.getContentPane().setScrollableY(true);
    for(int iter = 0 ; iter < characters.length ; iter++) {
        MultiButton mb = new MultiButton(characters[iter]);
        mb.setTextLine2(actors[iter]);
        mb.setIcon(pictures[iter]);
        d.add(mb);
        mb.addActionListener(ee -> {
            b.setTextLine1(mb.getTextLine1());
            b.setTextLine2(mb.getTextLine2());
            b.setIcon(mb.getIcon());
            d.dispose();
            b.revalidate();
        });
    }
    d.showPopupDialog(b);
});
hi.add(b);
hi.show();

如果您坚持使用 ComboBox,您可以使用模型为其提供您想要的任何对象数据。然后创建一个单元格渲染器来显示数据。这些都在 component section of Codname One's developer guide 中进行了深入讨论。请注意,由于 ComboBox 派生自 List 许多 List 提示和文档适用于 ComboBox.