代号一 - 多列表值
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" 之类的东西作为键。
问题
在一个表单上,我有一个多列表,其中每个项目都有一个“名称”和一个“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" 之类的东西作为键。