- android
- android.accessibilityservice
- android.accounts
- android.content
- android.database.sqlite
- android.graphics
- android.location
- android.media
- android.net
- android.os
- android.text
- android.view
- android.view.inputmethod
- android.widget
- AbsListView
- AbsoluteLayout
- AbsSeekBar
- AbsSpinner
- AdapterView
- AnalogClock
- BaseAdapter
- BaseExpandableListAdapter
- Button
- CheckBox
- CheckedTextView
- Checkable
- Chronometer
- CompoundButton
- CursorAdapter
- CursorTreeAdapter
- DatePicker
- DialerFilter
- DigitalClock
- EditText
- Filter
- Filter.FilterListener
- Filter.FilterResults
- ExpandableListAdapter
- Filterable
- Gallery
- Gallery.LayoutParams
- GridView
- GridLayout
- RadioGroup
- ImageView
- HorizontalScrollView
- ImageButton
- ImageSwitcher
- FilterQueryProvider
- ListAdapter
- ListView
- MediaController
- QuickContactBadge
- RadioButton
- RatingBar
- RelativeLayout
- RemoteViews
- ResourceCursorAdapter
- ResourceCursorTreeAdapter
- Scroller
- ScrollView
- SearchView
- SeekBar
- SeekBar.OnSeekBarChangeListener
- SimpleAdapter
- SimpleCursorAdapter
- SimpleCursorTreeAdapter
- SimpleExpandableListAdapter
- SlidingDrawer
- Spinner
- SpinnerAdapter
- WrapperListAdapter
- TabHost
- TabHost.TabSpec
- TextView
- TimePicker
- Toast
- TableLayout
- TableRow
- TableRow.LayoutParams
- TabWidget
- TextSwitcher
- ToggleButton
- TwoLineListItem
- VideoView
- ViewAnimator
- ViewFlipper
- ViewSwitcher
- ZoomButtonsController
- ZoomButton
- ZoomControls
- dalvik.system
Filter
Filter
翻译时间:2010-11-07
版本:Android 2.2 r1
结构
继承关系
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)
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 的用户):
Java: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);
}
}
XML: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>
XML: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>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论