Android 中文 SDK (47) —— Filter

前言html

  本章內容是 android.widget.Filter,譯爲"過濾器",版本爲Android 2.2 r1,翻譯來自"henly.zhang",再次感謝"henly.zhang" !期待你一塊兒參與 Android中文API 的翻譯,聯繫我over140@gmail.com。
 java

 

聲明android

  歡迎轉載,但請保留文章原始出處:)
 異步

    農民伯伯:http://over140.blog.51cto.com/ide

    Android中文翻譯組:http://code.taobao.org/project/view/404/
 函數

 

正文this

  1、結構spa

    public abstract class Filter extends Object線程

 
 

java.lang.Object翻譯

     android.widget.Filter


 

 

  2、概述

    過濾器經過過濾模式來約束數據,一般由實現了Filterable接口的子類來生成。 過濾操做是經過調用 filter(CharSequence) 或者 filter(CharSequence, android.widget.Filter.FilterListener)這些異步方法來完成的。以上方法一旦被調用,過濾請求就會被遞交到請求隊列中等待處理,同時該操做會取消那些以前遞交的可是尚未被處理的請求。

 

  3、構造函數
 

         public Filter ()

  建立一個新的異步過濾器。

 

 

  4、公共方法
 

 

  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) 

 

  5、 受保護方法
 

 

  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 

 

  6、補充
 

    示例代碼

      未過濾的數據以下圖所示:

 

 

爲過濾器設置約束條件(只顯示年齡爲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 >

 

結束
 

  再次感謝"henly.zhang"爲你們帶來優秀的翻譯和示例:)  

相關文章
相關標籤/搜索