加载时自动填充文本字段触发选择事件

时间:2016-10-16 22:36:31

标签: codenameone

看起来AutoCompleteTextField正在加载一个建议选择事件。我用ListModel测试它。您可以使用以下代码从准系统hello world项目重新创建此问题。

    public void start() {
    if (current != null) {
        current.show();
        return;
    }
    Form hi = new Form("Hi World");

    ListModel<String> suggestionsModel = new DefaultListModel<String>();
    suggestionsModel.addItem("Apple");
    suggestionsModel.addItem("Banana");
    suggestionsModel.addItem("Chocolate");
    suggestionsModel.addItem("Elk");
    suggestionsModel.addItem("Fish");
    AutoCompleteTextField search = new AutoCompleteTextField(suggestionsModel);

    suggestionsModel.addSelectionListener(new SelectionListener() {
        @Override
        public void selectionChanged(int oldSelected, int newSelected) {
            System.out.println("SUGGESTION SELECTED"+suggestionsModel.getSelectedIndex());
        }
    });
    hi.add(search);

    hi.show();
}

如果您运行代码,您可以看到&#34; SUGGESTION SELECTED0&#34;得到两次打印,确认选择是在加载时触发并默认选择第一个建议。

这引起了我的问题。我正在搜索一个对象然后如果找到,我正在向用户显示其属性。根据此问题,第一个对象的属性默认情况下会在加载时显示。

1 个答案:

答案 0 :(得分:2)

这是“过度渴望”的数据更改侦听器的行为,我们不会更改它,因为有一些依赖于此行为的边缘情况(例如粘贴,即时编辑类型等)。

使用它非常简单:

if(currentValue != lasValue) {
 ....
}