当用户在AutoCompleteTextView中键入内容时,我在异步任务中从服务器获取数据。我在AutoCompleteTextView中使用TextWatcher添加了addTextChangedListener。当成功获取数据然后使用setAdapter()方法将其显示为下拉列表时,现在用户单击结果数据,此数据将输入文本观察器,但下拉列表甚至可供用户看到。那么当用户选择一个条目时如何隐藏这个下拉列表呢?
发生此行为是因为当用户从下拉列表中选择一个项目,然后再次调用TextWatcher.onTextChanged()并且此调用发送一个新请求。所以这个下拉列表再次显示新的结果。
AutoCompleteTextView sourceEditTxt = (AutoCompleteTextView)findViewById(R.id.sourceEditTxt);
sourceEditTxt.addTextChangedListener(new TextWatcher()
{
public void onTextChanged(CharSequence s, int start, int before, int count)
{
new AsyncSuggestion().execute();
}
public void beforeTextChanged(CharSequence s, int start, int count,int after)
{}
public void afterTextChanged(Editable s)
{}
});
AsyncTask onPostExecuteCode:
ArrayAdapter<String> sourceAutoCompleteAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_dropdown_item_1line,/*suggestion array list*/);
sourceEditTxt.setAdapter(sourceAutoCompleteAdapter);
sourceAutoCompleteAdapter.notifyDataSetChanged();