Android方法的概括,android中的Filter接口简介
一、結構
public abstract class?Filter?extends?Object
java.lang.Object
android.widget.Filter
二、概述
過濾器通過過濾模式來約束數據,通常由實現了Filterable接口的子類來生成。?過濾操作是通過調用filter(CharSequence)或者filter(CharSequence, android.widget.Filter.FilterListener)這些異步方法來完成的。以上方法一旦被調用,過濾請求就會被遞交到請求隊列中等待處理,同時該操作會取消那些之前遞交的但是還沒有被處理的請求。
三、構造函數
public?Filter?()
創建一個新的異步過濾器。
四、公共方法
public CharSequence?convertResultToString?(Object resultValue)
將受過濾的集合對象轉換成CharSequence文本。所有繼承了Filter的子類應該重寫該方法。該方法的默認實現:如果參數為null則返回空字符串或者返回參數的字符串形式.
參數
resultValue轉換成CharSequence文本的對象
返回值
CharSequence文本
public final void?filter(CharSequence constraint, Filter.FilterListener listener)
啟動一個異步的過濾操作。對該方法的調用會取消之前隊列中等待處理的過濾請求并且遞交新的過濾請求等待執行。完成過濾操作之后,通知監聽器。
參數
constraint過濾數據的約束條件
listener?監聽過濾操作完成之后發出的通知
參見
filter(CharSequence)
performFiltering(CharSequence)
publishResults(CharSequence, android.widget.Filter.FilterResults)
public final void?filter(CharSequence constraint)
啟動一個異步的過濾操作。對該方法的調用會取消之前隊列中等待處理的過濾請求并且遞交新的過濾請求等待執行。
參數
constraint過濾數據的約束條件
參見
filter(CharSequence, android.widget.Filter.FilterListener)
五、 受保護方法
protected abstract Filter.FilterResults?performFiltering?(CharSequence constraint)
根據約束條件調用一個工作線程過濾數據。子類必須實現該方法來執行過濾操作。過濾結果以Filter.FilterResults的形式返回,然后在UI線程中通過publishResults(CharSequence,android.widget.Filter.FilterResults)方法來發布。
約定:當約束條件為null時,原始數據必須被恢復。
參數
constraint?約束條件
返回值
過濾結果
參見
filter(CharSequence, android.widget.Filter.FilterListener)
publishResults(CharSequence, android.widget.Filter.FilterResults)
Filter.FilterResults
protected abstract void?publishResults?(CharSequence constraint, Filter.FilterResults results)
通過調用UI線程在用戶界面發布過濾結果。子類必須實現該方法來顯示performFiltering(CharSequence)的過濾結果。
參數
constraint?約束條件
results?過濾結果
參見
filter(CharSequence, android.widget.Filter.FilterListener)
performFiltering(CharSequence)
Filter.FilterResults
六、補充
示例代碼
未過濾的數據如下圖所示:
為過濾器設置約束條件(只顯示年齡為22的用戶):
TestFilter.java
public
class
TestFilter
extends
ListActivity?{
/**
Called?when?the?activity?is?first?created.
*/
@Override
public
void
onCreate(Bundle?savedInstanceState)?{
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList
<
HashMap
<
String,String
>>
list
=
new
ArrayList
<
HashMap
<
String,?String
>>
();
HashMap
<
String,?String
>
map1
=
new
HashMap
<
String,?String
>
();
HashMap
<
String,?String
>
map2
=
new
HashMap
<
String,?String
>
();
HashMap
<
String,?String
>
map3
=
new
HashMap
<
String,?String
>
();
map1.put(
"
name
"
,
"
henly
"
);
map1.put(
"
age
"
,
"
22
"
);
map2.put(
"
name
"
,
"
john
"
);
map2.put(
"
age
"
,
"
23
"
);
map3.put(
"
name
"
,
"
lilei
"
);
map3.put(
"
age
"
,
"
22
"
);
list.add(map1);
list.add(map2);
list.add(map3);
SimpleAdapter?simpleAdapter
=
new
SimpleAdapter(
this
,?list,?R.layout.user,
new
String[]{
"
name
"
,
"
age
"
},
new
int
[]{R.id.name,R.id.age});
String?str
=
new
String(
"
22
"
);
CharSequence?constraint
=
str.subSequence(
0
,?str.length());
Filter?filter
=
simpleAdapter.getFilter();
//
得到一個過濾器
filter.filter(constraint);
//
為該過濾器設置約束條件
setListAdapter(simpleAdapter);
}
}
main.xml
xml?version="1.0"?encoding="utf-8"
?>
<
LinearLayout
xmlns:android
="http://schemas.android.com/apk/res/android"
android:orientation
="vertical"
android:layout_width
="fill_parent"
android:layout_height
="fill_parent"
>
<
LinearLayout
android:id
="@+id/listlinearlayout"
android:layout_width
="fill_parent"
android:layout_height
="wrap_content"
android:orientation
="vertical"
>
<
ListView
android:id
="@id/android:list"
android:layout_width
="fill_parent"
android:layout_height
="wrap_content"
android:drawSelectorOnTop
="false"
android:scrollbars
="vertical"
/>
LinearLayout
>
LinearLayout
>
user.xml
xml?version="1.0"?encoding="utf-8"
?>
<
LinearLayout
xmlns:android
="http://schemas.android.com/apk/res/android"
android:orientation
="horizontal"
android:layout_width
="fill_parent"
android:layout_height
="fill_parent"
android:paddingLeft
="12dip"
android:paddingRight
="12dip"
android:paddingTop
="1dip"
android:paddingBottom
="1dip"
>
<
TextView
android:id
="@+id/name"
android:layout_width
="150dip"
android:layout_height
="30dip"
android:textSize
="12pt"
/>
<
TextView
android:id
="@+id/age"
android:layout_width
="wrap_content"
android:layout_height
="wrap_content"
android:textSize
="12pt"
/>
LinearLayout
>
總結
以上是生活随笔為你收集整理的Android方法的概括,android中的Filter接口简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 24 | 二叉树基础(下):有了如此高效
- 下一篇: Android 蓝牙4.0在实际开发中的