Java autoCompleteTextView仅在删除字母后显示结果
我创建了一个布局,其中有一个Java autoCompleteTextView仅在删除字母后显示结果,java,android,autocompletetextview,Java,Android,Autocompletetextview,我创建了一个布局,其中有一个autoCompleteTextView,应该会显示一些书名 我注意到它在某些情况下不会显示结果,除非我删除一个字母,然后显示正确的结果 例如,我有一个数组字符串,其中包含单词Potter 键入Potter时,不会显示任何结果: 然而,如果我删除一个字母,它会突然显示: im用于填充列表的代码为: atv_Search.addTextChangedListener( new TextWatcher() { @Override public voi
autoCompleteTextView
,应该会显示一些书名
我注意到它在某些情况下不会显示结果,除非我删除一个字母,然后显示正确的结果
例如,我有一个数组字符串,其中包含单词Potter
键入Potter时,不会显示任何结果:
然而,如果我删除一个字母,它会突然显示:
im用于填充列表的代码为:
atv_Search.addTextChangedListener( new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() > 0) {
SOME CODE TO GET NAMES
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
Set<String> set = new LinkedHashSet<>( autoBookNames );
autoBookNames.clear();
autoBookNames.addAll( set );
// UNTIL THIS POINT IT ALL WORKS GOOD AND I SEE THAT authBookNames IS NOT EMPTY, YET NOT SHOWING UNTIL DELETE
listAutoAdapter = new ArrayAdapter<String>( getApplicationContext(), R.layout.item_auto_search, autoBookNames );
atv_Search.setThreshold( 1 );
atv_Search.setAdapter( listAutoAdapter );
}
} );
atv_Search.addTextChangedListener(新的TextWatcher(){
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
如果(s.长度()>0){
一些获取名字的代码
}
}
@凌驾
更改前文本之前的公共void(字符序列s、int start、int count、int after){
}
@凌驾
公共无效后文本已更改(可编辑){
Set Set=新的LinkedHashSet(自动书店);
自动书店;
自动售检票机。自动售检票机(套);
//在这一点之前,一切都很好,我看到authBookNames不是空的,直到删除才显示
listAutoAdapter=new ArrayAdapter(getApplicationContext(),R.layout.item\u auto\u search,autoBookNames);
atv_搜索设置阈值(1);
atv_Search.setAdapter(listAutoAdapter);
}
} );
正如我在调试代码时所写的那样,即使在删除之前,我也得到了所有的结果,但出于某种原因,它没有显示出来
有什么原因吗?我的意思是,大多数用户不会想删除一封信来显示结果
谢谢您是否认为“获取名称的某些代码”中比较字符串的索引是错误的(例如最后一个索引小于正确的1个字符)请尝试==>
listAutoAdapter = new ArrayAdapter<String>( getApplicationContext(), R.layout.item_auto_search, autoBookNames );
atv_Search.setAdapter( listAutoAdapter );
atv_Search.addTextChangedListener( new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
listAutoAdapter.getFilter().filter(s);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
} );
listAutoAdapter=newarrayadapter(getApplicationContext(),R.layout.item\u auto\u search,autoBookNames);
atv_Search.setAdapter(listAutoAdapter);
atv_Search.addTextChangedListener(新的TextWatcher(){
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
listAutoAdapter.getFilter().filter;
}
@凌驾
更改前文本之前的公共void(字符序列s、int start、int count、int after){
}
@凌驾
公共无效后文本已更改(可编辑){
}
} );
让我知道这是否有效移动
listAutoAdapter = new ArrayAdapter<String>( getApplicationContext(), R.layout.item_auto_search, autoBookNames );
atv_Search.setThreshold( 1 );
atv_Search.setAdapter( listAutoAdapter );
listAutoAdapter=newarrayadapter(getApplicationContext(),R.layout.item\u auto\u search,autoBookNames);
atv_搜索设置阈值(1);
atv_Search.setAdapter(listAutoAdapter);
改成文本,再试一次,本 不,都测试过了。问题在下拉列表中的某个地方,因为我通过的列表肯定是正确的。下面3个解决方案对你不起作用???工作和其他你知道的东西…让我先回到我的电脑上检查一下!我第一次在PostextChanged中初始化listAutoAdapter,因此当我尝试您的解决方案时,我尝试在空对象引用上调用虚拟方法“android.widget.Filter android.widget.ArrayAdapter.getFilter()”,但当我在PostextChanged中使用它时,它成功了。非常感谢。