android 输入框自动匹配-AutoCompleteTextView

封装自动适配的adapter可以监听,并且可以监听自动匹配输入框的输入事件。
package com;import java.util.List;import android.app.Activity;import android.text.Editable;import android.text.TextUtils;import android.text.TextWatcher;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ArrayAdapter;import android.widget.AutoCompleteTextView;/** * @ClassName: AutoCompleteTextViewUtil * @author:hlu * @Date:2013-4-17 * @version  V1.0.0 * @Description: AutoCompleteTextView 实现的自动匹配的实现 */public class AutoCompleteTextViewUtil {private AutoCompleteTextView mACTV ;private ArrayAdapter<String> mAdapter  ;private ChangeAdapterDataListener mListener ;private List<String> mListObjects= null ;private boolean flagMListObjects = false  ;//是否执行查询,当输入框的字符长度大于2时,才会查询,查询了一次之后不会再查询。private boolean flagQuery = false ;public AutoCompleteTextViewUtil(AutoCompleteTextView actv){this.mACTV = actv ;mACTV.addTextChangedListener(watcher) ;mACTV.setOnFocusChangeListener(focusListener) ;mACTV.setOnItemClickListener(itemClickListener) ;mACTV.setOnClickListener(onClickL) ;}public void setAdapter(Activity activity,int resource,List<String> objects){this.mListObjects = objects ;flagMListObjects = true ;flagQuery = false ;mAdapter = new ArrayAdapter<String>(activity,android.R.layout.simple_dropdown_item_1line, mListObjects);mACTV.setAdapter(mAdapter) ;}public void setAdapter(Activity activity,List<String> objects){this.setAdapter(activity, android.R.layout.simple_dropdown_item_1line, objects);}public void setChangeAdapterDataListener(ChangeAdapterDataListener l){this.mListener = l ;}private void setDataList(String text){List<String> list = mListener.getDataList(text) ;if(list != null && list.size() > 0){mListObjects.addAll(list) ;}}private TextWatcher watcher = new TextWatcher() {    @Override    public void beforeTextChanged(CharSequence s, int start, int count,    int after) {    }    @Override    public void onTextChanged(CharSequence s, int start, int before,    int count) {    String enteredText = s.toString() ;    if(!TextUtils.isEmpty(enteredText) && enteredText.trim().length() > 0){    //查询新匹配值    if(!flagQuery){    if(flagMListObjects){    //更新List的数据。    setDataList(enteredText.trim());    }    mAdapter.notifyDataSetChanged() ;    }    flagQuery = true ;    }else{    flagQuery = false ;    }    }    @Override    public void afterTextChanged(Editable s) {        }} ;public interface ChangeAdapterDataListener{List<String> getDataList(String text) ;void checkInputTextExist(String text) ;}private View.OnFocusChangeListener focusListener = new View.OnFocusChangeListener() {        @Override        public void onFocusChange(View v, boolean hasFocus) {        mACTV.setFocusable(hasFocus) ;        if(!hasFocus){        mListener.checkInputTextExist(mACTV.getText().toString().trim()) ;        }        }    };     private OnItemClickListener itemClickListener = new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position,long id) {mListener.checkInputTextExist(mACTV.getText().toString().trim()) ;}    };        private OnClickListener onClickL = new OnClickListener() {@Overridepublic void onClick(View v) {mACTV.setFocusableInTouchMode(true) ;mACTV.requestFocus();}};}


                            使用方法:                                        
AutoCompleteTextViewUtil actvUtil = new AutoCompleteTextViewUtil(purchaseOrderSite) ;List<String> data = new ArrayList<String>() ;actvUtil.setAdapter(this, data) ;actvUtil.setChangeAdapterDataListener(new ChangeAdapterDataListener() {        @Override    public List<String> getDataList() {    List<String> data = new ArrayList<String>() ;data.add("qaz");data.add("qaza");data.add("qazab");data.add("qazabd");return data;    }});
效果图: android 输入框自动匹配-AutoCompleteTextView_第1张图片


注意:AutoCompleteTextView.setOnItemSelectedListener(), 没有效果


更多相关文章

  1. Android 仿微信TabHost使用方法详解
  2. Android下拉列表使用方法
  3. Android中NDK的使用方法
  4. Android TextView各种使用方法
  5. Android SVG矢量资源的使用方法
  6. Android Selector和Shape的使用方法
  7. Android之系统自带的文字外观设置及实际显示效果图 android:text
  8. 【Android 开发】:UI控件之显示图片控件 ImageView 的使用方法
  9. Android AlertDialog的基本使用方法

随机推荐

  1. Android源码阅读分析:从Activity开始(一)—
  2. Android的MediaPlayer架构介绍
  3. 我的DIY Android(安卓)之旅--gps框架及简
  4. android 中的 ContentObserver (二)
  5. Rockie's Android(安卓)Porting Guide(2)—
  6. 疯狂android讲义---intent-filter
  7. [连载 4/15] Android(安卓)从入门到精通E
  8. Android应用程序内存分析-Memory Analysi
  9. Android(安卓)SDK 2.2 开发环境搭建
  10. Android(安卓)- 文件读写操作 总结