Codename One - 多列表值

时间:2015-11-25 07:24:23

标签: codenameone

问题

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

选择一个项目后,它将转到“个人资料”屏幕,然后根据我将从存储中获取的“ID号”显示该人的所有信息。

问题

如何从我刚点击的Multilist项目中获取信息? 然后,我如何保存该信息,以便我可以在“显示前(配置文件屏幕)”中使用它,以便我可以从存储中检索信息。 Thnaks

2 个答案:

答案 0 :(得分:2)

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

您可以将单个元素保存到actionEvent中的静态变量中,并在配置文件表单的before show中使用它。例如:

全球宣布:

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,您应该能够使用该值。对所需的所有值执行相同的操作。

答案 1 :(得分:1)

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

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

在这种情况下,如果列表中有一个动作事件,您只需获取列表实例即可调用Map m = (Map)myList.getSelectedItem();

地图应返回包含数据的键/值对。通过以不同于rendererd列表元素的方式命名它们,您可以在该数据中隐藏密钥,这样您就可以使用“id”作为键。