有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java检查Hashmap中的键是否在AutoCompleteTextView中键入

我创建了一个HashMap<String, String>,我预先填充了它

我想让我的AutoCompleteTextView告诉我,因为我正在键入它是否在HashMap中。以下是我目前的代码:

autocomplete.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        if(s.length() > 0){     
            if (map_clients.containsKey(s)){
                Toast.makeText(context, "He's here", Toast.LENGTH_SHORT).show();
            }
            else {
                Toast.makeText(context, "He's not here", Toast.LENGTH_SHORT).show();
            }
        }
        else {

        }
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {            

    }

    @Override
    public void afterTextChanged(Editable s) {

    }
});

它总是告诉我“他不在这里”,即使当我完全键入文本或从自动完成中选择文本时


共 (2) 个答案

  1. # 1 楼答案

    autocomplete.addTextChangedListener(new TextWatcher() {
    
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                if(s.length() > 0){
                    text = s.toString();
                    if(map_clients.containsKey(text)){
                        Toast.makeText(context, "He's here", Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(context, "He's not here", Toast.LENGTH_SHORT).show();
                    }
                }else{
    
                }
            }
    
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
            }
    
            @Override
            public void afterTextChanged(Editable s) {
    
            }
        });
    

    我已将其更改为text=s.toString(); 我想是因为我把HashMap放进去了<;字符串,字符串>;而不是CharSequence

  2. # 2 楼答案

    您需要使用树映射来存储数据,然后对数据进行排序,然后从中可以从代码中寻找最佳匹配

    您的另一个选择是使用SortedList或array,并使用binarySearch实现以提高速度