代号一 - 多列表值

Codename One - multilist values

问题

在一个表单上,我有一个多列表,其中每个项目都有一个“名称”和一个“ID 号”。我希望我的应用执行以下操作:

在我 select 一个项目之后,它会转到“个人资料”屏幕,然后它会根据我将从存储中获得的“身份证号码”显示关于那个人的所有信息.

问题

如何从我刚刚单击的多列表项中获取信息? 然后,我如何保存该信息,以便我可以在“展示前(配置文件屏幕)”中使用它,以便我可以从存储中检索信息。 特纳克斯

我建议您使用 MultiButton 而不是 Multilist,然后您可以将 actionEvent 添加到单个元素。

您可以将单个元素保存到 actionEvent 中的静态变量中,并在个人资料表单的展示前使用它。例如:

全局声明:

private static String UserName = "";

并初始化如下:

Container content = new Container(new BoxLayout(BoxLayout.Y_AXIS));
content.setScrollableY(true);
for (int i = 0; i < YourItemsLength; i++) {
        final MultiButton mb = new MultiButton("Blablabla");
        mb.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent evt) {
                UserName = mb.getTextLine1(); // or anything you want it to be
                //show the profile form here
            }
        });
        content.addComponent(mb);
}
content.revalidate();

在profile的beforeShow()中,调用UserName,应该可以使用该值。对您需要的所有值执行相同的操作。

我完全同意 Diamonds 的回答,我认为这是创建项目列表的 best/simplest 方式。但是,如果您仍然想使用 MultiList,则需要实施 ListModel 或使用 DefaultListModel.

根据你的问题,我假设你刚刚使用了 MultiList 并填写了值?

在这种情况下,当列表上有一个动作事件时,您可以只获取调用的列表实例 Map m = (Map)myList.getSelectedItem();

地图应该 return key/value 对包含您的数据。您可以通过将它们命名为不同于 rendererd 列表元素来简单地在该数据中隐藏键,这样您就可以将 "id" 之类的东西作为键。