歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

使用EditText+ListView並結合TextWatcher實現輸入關鍵字篩選數據

想必大家應該遇到過這樣的情況,當點擊Spinner控件後彈出的列表內容超多,一個一個滑動著去尋找所要的項很麻煩,尤其是當自己知道想要選擇的內容,這時候如果我們只需要輸入某些關鍵字,就可以講上百條數據篩選出幾十條甚至更少,豈不是會方便很多。

其實這是項目中的一個需求,由於目前公司接觸的多數和數據采集相關的PDA項目,有很多填寫項一個spinner已經不方便滿足需求,雖然客戶還沒有提出,但提前做好優化總是沒有錯的,所以項目組的同事提出這個需求並讓我嘗試著去做出來,當中給了我不少幫助和意見。

閒言少敘,簡單說下這個demo的實現,點擊一個button,彈出一個類似spinner的界面,包含一個edittext和listview,當在輸入框中鍵入關鍵字時,下面的listview所顯示的數據可以隨之進行篩選,點擊item,將所選值返回給button。實現其實不難,只不過接觸了一個新的知識而已,就是TextWatcher,它本身是一個接口,需要實現並覆蓋它的三個方法,在每個方法中執行相應的操作,然後在需要的控件上添加監聽即可。先來看本Demo實現後的效果

               

進入後點擊按鈕                                                  彈出數據界面

               

輸入關鍵字進行篩選                                                  點擊子項目返回給按鈕

以下是部分代碼的實現,其實比較簡單,唯一不太熟悉的就是TextWatcher,因為之前沒用過,但是很簡單,只有三個方法,現實了就OK了

首先介紹一下這個自己寫的類,它實現了一個數據的值value和顯示名稱Name的綁定,可以很方便的用於添加數據,當然也可以使用自己的方法去添加數據,本例子我就用這個了。

package com.cogent.enumbutton; 
 
/**
 * 一個Value(綁定值)-Name(顯示名稱)對象,如:1-漢族
 */ 
public class ValueNameDomain { 
 
    private String Value;//綁定的值 
    private String Name;//顯示的選項名稱 
     
    public ValueNameDomain(){} 
     
    public ValueNameDomain(String name,String value){ 
        this.Name = name; 
        this.Value = value; 
    } 
     
    /**
    * 獲取綁定的值
    */ 
    public String getValue() { 
        return Value; 
    } 
    /**
    * 設置綁定的值
    */ 
    public void setValue(String value) { 
        this.Value = value; 
    } 
    /**
    * 獲取顯示的選項名稱
    */ 
    public String getName() { 
        return Name; 
    } 
    /**
    * 設置顯示的選項名稱
    */ 
    public void setName(String name) { 
        this.Name = name; 
    } 
    @Override 
    public String toString() { 
        return Name; 
    } 
     
     

Copyright © Linux教程網 All Rights Reserved