使用EditText+ListView并结合TextWatcher实现输入关键字

想必大家应该遇到过这样的情况,当点击Spinner控件后弹出的列表内容超多,一个一个滑动着去寻找所要的项很麻烦,尤其是当自己知道想要选择的内容,这时候如果我们只需要输入某些关键字,就可以讲上百条数据筛选出几十条甚至更少,岂不是会方便很多。

其实这是项目中的一个需求,由于目前公司接触的多数和数据采集相关的PDA项目,有很多填写项一个spinner已经不方便满足需求,虽然客户还没有提出,但提前做好优化总是没有错的,所以项目组的同事提出这个需求并让我尝试着去做出来,当中给了我不少帮助和意见。

闲言少叙,简单说下这个demo的实现,点击一个button,弹出一个类似spinner的界面,包含一个edittext和listview,当在输入框中键入关键字时,下面的listview所显示的数据可以随之进行筛选,点击item,将所选值返回给button。实现其实不难,只不过接触了一个新的知识而已,就是TextWatcher,它本身是一个接口,需要实现并覆盖它的三个方法,在每个方法中执行相应的操作,然后在需要的控件上添加监听即可。先来看本Demo实现后的效果

使用EditText+ListView并结合TextWatcher实现输入关键字

               

使用EditText+ListView并结合TextWatcher实现输入关键字

进入后点击按钮                                                  弹出数据界面

使用EditText+ListView并结合TextWatcher实现输入关键字

               

使用EditText+ListView并结合TextWatcher实现输入关键字

输入关键字进行筛选                                                  点击子项目返回给按钮

以下是部分代码的实现,其实比较简单,唯一不太熟悉的就是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; 
    } 
     
     

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/cab000069851dcfd00e47323200b7543.html