網絡調用的方法Filter.performFiltering
內進行:
@Override
public Filter getFilter() {
Filter filter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults = new FilterResults();
if (constraint != null) {
// Retrieve the autocomplete results.
resultList = autocomplete(constraint.toString());
// Assign the data to the FilterResults
filterResults.values = resultList;
filterResults.count = resultList.size();
}
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if (results != null && results.count > 0) {
notifyDataSetChanged();
}
else {
notifyDataSetInvalidated();
}
}};
return filter;
}
你可以從文檔中看到,Filter.performFiltering()
方法在工作線程內執行:
在工作線程中調用,以根據 約束條件過濾數據。子類必須實現此方法才能執行 篩選操作。通過篩選操作計算的結果必須返回作爲Filter.FilterResults
,然後將通過publishResults(CharSequence, android.widget.Filter.FilterResults)
在 UI線程中發佈。