android 输入框自动匹配-AutoCompleteTextView
2013-04-17 16:46
417 查看
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() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { mListener.checkInputTextExist(mACTV.getText().toString().trim()) ; } }; private OnClickListener onClickL = new OnClickListener() { @Override public 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; } });效果图:
注意:AutoCompleteTextView.setOnItemSelectedListener(), 没有效果
相关文章推荐
- android 输入框自动匹配-AutoCompleteTextView
- Android 之 自动匹配字符AutoCompleteTextView
- android 自动匹配文本 AutoCompleteTextView /MultiAutoCompleteTextView
- android autocompletetextview(自动匹配控件)类比listview
- Android——自动完成输入框提示功能的菜单_AutoCompleteTextView
- 【Android】自动提示匹配之AutoCompleteTextView
- android 自动匹配文本 AutoCompleteTextView /MultiAutoCompleteTextView
- 输入框自动匹配控件AutoCompleteTextView
- Android控件之自动匹配输入内容AutoCompleteTextView
- AutoCompleteTextView自动匹配输入框中的内容【转】
- Android( 基本控件)、progressBar+Handler(进度条)、AutoCompleteTextView(单行自动补全)、MultiAutoCompleteTextView(多行补全)
- Android学习系列之控件 AutoCompleteTextView邮箱后缀自动补全
- Android学习 19 ->自动提示输入AutoCompleteTextView
- AutoCompleteTextView自动提示输入框问题
- AutoCompleteTextView实现自动匹配输入内容
- Android AutoCompleteTextView自动提示文本框
- Android学习系列之控件 AutoCompleteTextView邮箱后缀自动补全
- 玩转Android---UI篇---AutoCompleteTextView(自动提示)
- Android 系列 6.19 AutoCompleteTextView+SQLite实现自动检索