AutoCompleteTextField列表并不总是滚动到顶部?

时间:2016-11-03 20:03:22

标签: autocomplete codenameone

在我开始在TextField中进行退格之前,AutoCompleteTextField似乎完全按预期工作。我不确定区别是什么,但是如果我输入类似于" 123 M"然后我得到以" 123 M"开头的价值观。如果我退格并删除M离开" 123"在该字段中,列表会更改,但不会滚动到列表顶部。

我应该注意,在我的iPhone上运行调试版本时,一切都在模拟器上工作正常,并且我遇到了这种情况。

编辑:所以这不仅在退格时发生。此图显示了按键输入地址键时的结果。在列表无法查看或剪辑的任何图片中,我可以向下拖动列表以使其显示正确。我没有在Android设备上试过这个。

EDIT2:

59 * * * * cd /home/sansal/Scripts && sudo ./usbreset /dev/bus/usb/002/003  

enter image description here

1 个答案:

答案 0 :(得分:0)

我在iPhone 4s上使用了这段代码:

public void start() {
    if(current != null){
        current.show();
        return;
    }
   Form hi = new Form("AutoComplete", new BorderLayout());
   if(apiKey == null) {
       hi.add(new SpanLabel("This demo requires a valid google API key to be set in the constant apiKey, "
               + "you can get this key for the webservice (not the native key) by following the instructions here: "
               + "https://developers.google.com/places/web-service/get-api-key"));
       hi.getToolbar().addCommandToRightBar("Get Key", null, e -> Display.getInstance().execute("https://developers.google.com/places/web-service/get-api-key"));
       hi.show();
       return;
   }
    Container box = new Container(new BoxLayout(BoxLayout.Y_AXIS));
    box.setScrollableY(true);
   for(int iter = 0 ; iter < 30 ; iter++) {
        box.add(createAutoComplete());
   }
   hi.add(BorderLayout.CENTER, box);
    hi.show();
}

private AutoCompleteTextField createAutoComplete() {
    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 = searchLocations(text);
            if(l == null || l.length == 0) {
                return false;
            }

            options.removeAll();
            for(String s : l) {
                options.addItem(s);
            }
            return true;
        }

    };
    ac.setMinimumElementsShownInPopup(5);
    return ac;
}

String[] searchLocations(String text) {        
    try {
        if(text.length() > 0) {
            ConnectionRequest r = new ConnectionRequest();
            r.setPost(false);
            r.setUrl("https://maps.googleapis.com/maps/api/place/autocomplete/json");
            r.addArgument("key", apiKey);
            r.addArgument("input", text);
            NetworkManager.getInstance().addToQueueAndWait(r);
            Map<String,Object> result = new JSONParser().parseJSON(new InputStreamReader(new ByteArrayInputStream(r.getResponseData()), "UTF-8"));
            String[] res = Result.fromContent(result).getAsStringArray("//description");
            return res;
        }
    } catch(Exception err) {
        Log.e(err);
    }
    return null;
}

我能够创建此问题enter image description here,但不是您描述的问题。