Android API之android.widget.Filterable
android.widget.Filterable
定義了一種可過濾的行為。Filterable介面通常有android.widget.Adapter來實現。介面Filterable中有個抽象方法getFilter()需要實現。
Filter android.widget.Filterable.getFilter()
返回一個filter物件,用來過濾出符合某種pattern的資料。getFilter()方法通常在android.widget.Adapter類中實現。
android.widget.Filter
通常是實現Filterable介面來建立Filter物件。方法filter(CharSequence)、filter(CharSequence, FilterListener)實現過濾操作是非同步進行的。將一個過濾請求放到請求佇列中,在稍候處理。取消上次沒有執行的過濾請求。建立一個Filter物件,需要至少實現兩個抽象方法:
protected FilterResults performFiltering(CharSequence constraint)
protected void publishResults(CharSequence constraint, FilterResults results)
方法一:
protected FilterResults performFiltering(CharSequence constraint)
在worker執行緒中呼叫,依據constraint來過濾。返回結果,一個FilterResults物件,將通過方法publishResults(Charsequence, FilterResults)在UI執行緒中發表。
當引數(constraint)為null,恢復為初始的資料。
方法二:
protected void publishResults(CharSequence constraint, FilterResults results)
在UI執行緒中呼叫。發表過濾操作的結果顯示到UI中。