我创建了一个我预先填充的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) {
}
});
它总是告诉我“他不在这里”即使我完全输入文字或从自动完成中选择它。
答案 0 :(得分:2)
你需要使用TreeMap来存储你的数据,然后对它进行排序,然后从那里你可以从你的代码中寻找最合适的数据。
您的另一个选择是使用SortedList或数组并使用binarySearch实现来提高速度。
答案 1 :(得分:0)
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放在&lt;字符串,字符串&gt;而不是CharSequence。