Codenameone Codename One-在运行时修改AutoCompleteTextField数据

Codenameone Codename One-在运行时修改AutoCompleteTextField数据,codenameone,Codenameone,我有一个AutoCompleteTextField,我想在运行时更改它的选项。 问题是我不知道如何显示更改 以下是我尝试过的一个非常简单的例子: public void start() { if(current != null){ current.show(); return; } Form form = new Form( new FlowLayout() ); String [] list2 = { "option A", "

我有一个AutoCompleteTextField,我想在运行时更改它的选项。 问题是我不知道如何显示更改

以下是我尝试过的一个非常简单的例子:

public void start() {
    if(current != null){
        current.show();
        return;
    }
    Form form = new Form( new FlowLayout() );

    String [] list2 = { "option A", "option B"};
    AutoCompleteTextField textField2 = new AutoCompleteTextField( list2 );
    form.add( textField2 );

    form.show();

    list2 =  new String [2];
    list2 [0] = "X";
    list2 [1] = "D";
    textField2 = new AutoCompleteTextField( list2 );

    form.show();
}
我总是显示“选项A”和“选项B”。我已经尝试了.repaint()、textField2.repaint()

任何帮助都将不胜感激。

试试以下方法:

final DefaultListModel<String> options = new DefaultListModel<>();
AutoCompleteTextField ac = new AutoCompleteTextField(options) {

    @Override
    protected boolean filter(String text) {
        if(text.length() == 0) {
            return false;
        }
        String[] l = changeOptions(text);
        if(l == null || l.length == 0) {
            return false;
        }
        options.removeAll();
        for(String s : l) {
            options.addItem(s);
        }
        return true;
    }

};


private String[] changeOptions(String text){
    String[] list2 =  new String [2];
    if(<some_condition_with_text>){
        list2 [0] = "option A";
        list2 [1] = "option B";
        return list2;
    }
    if(<some_other_condition_with_text>){
        list2 [0] = "X";
        list2 [1] = "D";
        return list2;
    }
}
final DefaultListModel options=new DefaultListModel();
AutoCompleteTextField ac=新的AutoCompleteTextField(选项){
@凌驾
受保护的布尔过滤器(字符串文本){
如果(text.length()==0){
返回false;
}
字符串[]l=更改选项(文本);
如果(l==null | | l.length==0){
返回false;
}
options.removeAll();
for(字符串s:l){
选项。附加项;
}
返回true;
}
};
私有字符串[]更改选项(字符串文本){
String[]list2=新字符串[2];
if(){
列表2[0]=“选项A”;
列表2[1]=“选项B”;
返回列表2;
}
if(){
列表2[0]=“X”;
清单2[1]=“D”;
返回列表2;
}
}
看看