gpt4 book ai didi

java - Java FX 中的 Android 适配器替代方案

转载 作者:行者123 更新时间:2023-11-30 01:46:19 24 4
gpt4 key购买 nike

我已经搜索过 Google,但没有找到任何有用的信息。
我正在使用 Adapter让组合框选择name 并获取它的id。 (不是位置索引,id 来自数据库)在 Android 中。但我不知道如何在 JavaFx 中使用它?

我试过 JavaFx POJO在来自数据库 idname 的列表中。
我添加到 ObservableListsetItems(list.getName()) 到组合框。
当 Combobox 选择时获取它的位置索引并使用该索引并从列表中获取真实 ID。 list.getID(索引)

这是最好/正确的方法吗?或者是否有 Java FX 的 Android 适配器替代方案?

最佳答案

您将在 ComboBox 中显示同时包含 nameid 的项目,并指定如何将这些项目转换为 String 显示在 ComboBox 中。

ComboBox<Item> comboBox = new ComboBox<>();

comboBox.setItems(FXCollections.observableArrayList(new Item("foo", "17"), new Item("bar", "9")));
comboBox.setConverter(new StringConverter<Item>() {

@Override
public Item fromString(String string) {
// converts string the item, if comboBox is editable
return comboBox.getItems().stream().filter((item) -> Objects.equals(string, item.getName())).findFirst().orElse(null);
}

@Override
public String toString(Item object) {
// convert items to string shown in the comboBox
return object == null ? null : object.getName();
}
});

// Add listener that prints id of selected items to System.out
comboBox.getSelectionModel().selectedItemProperty().addListener((ObservableValue<? extends Item> observable, Item oldValue, Item newValue) -> {
System.out.println(newValue == null ? "no item selected" : "id=" + newValue.getId());
});
class Item {
private final String name;
private final String id;

public String getName() {
return name;
}

public String getId() {
return id;
}

public Item(String name, String id) {
this.name = name;
this.id = id;
}

}

当然,您也可以使用不同种类的元素,如果那样对您来说更方便的话。例如。可以使用 Integer(= indices in list) 并且可以使用 StringConverter 将索引转换为列表中的名称(和 id),或者您可以使用 id作为 ComboBox 的项目,并使用 Map 获取与 StringConverter 中的 ID 关联的字符串。

如果您想更加灵活地展示项目的视觉表现方式,您可以使用 cellFactory而不是创建自定义 ListCell(链接的 javadoc 中有一个示例)。如果您将它与 Integer0, 1, ..., itemcount-1ComboBox 一起使用,您可能会非常接近android 适配器。然而,在这种情况下使用 StringConverter 似乎就足够了。

关于java - Java FX 中的 Android 适配器替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33666995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com