您也可以使用Filter接口來實現此功能。結果Filter.performFiltering()僅僅爲了這種目的被調用掉UI線程。下面是一些代碼,我用它來做到這一點:
Filter filter = new Filter() {
@Override
public CharSequence convertResultToString(Object resultValue) {
return resultValue.toString();
}
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
if(charSequence == null) return null;
try {
// This call hits the server with the name I'm looking for and parses the JSON returned for the first 25 results
PagedResult results = searchByName(charSequence.toString(), 1, 25, true);
FilterResults filterResults = new FilterResults();
filterResults.values = results.getResults();
filterResults.count = results.getResults().size();
return filterResults;
} catch (JSONException e) {
return new FilterResults();
}
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
if(filterResults != null) {
adapter.clear();
adapter.addAll((List<MyObject>)filterResults.values);
}
}
};
然後使用過濾器:
private AutoCompleteTextView beverageName;
...
beverageName = findViewById(R.id.beverageName);
ListAdapter adapter = ...
adapter.setFilter(filter);
beverageName.setAdapter(adapter);
以及我得到它的方法是setTextChangeListener參考以下鏈接http://stackoverflow.com/questions/ 3954244 /獲取電流,建議從 - autocompletetextview – abhishek