AutoCompleteTextView的使用
2017-12-01 16:11
288 查看
AutoCompleteTextView autoTextView;一、简单使用AdapterString[] gxy_yws = new String[] { "缬沙坦片", "复方利血平片", "复方利血平氨苯蝶啶片", "硝苯地平缓释片", "硝苯地平控释片", "卡托普利片", "尼莫地平片", "马来酸依那普利片", "苯磺酸氨氯地平片", "吲达帕胺片", "依那普利片", "心普利片", "心胺利片", "硝苯地平片", "尼群地平片", }; // 创建一个ArrayAdapter,封装数组 ArrayAdapter<String> arr = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_dropdown_item_1line, gxy_yws); autoTextView.setAdapter(arr);二、使用自定义的Adapter====Adapter 继承BaseAdapter 并实现Filterable 接口 (HospitalAutoCompleteAdaptermAdapter)1、设置数据 ;1)autoTextView.setThreshold(1); //设置第一个字符就开始检索2)mAdapter =new HospitalAutoCompleteAdapter(getActivity());autoTextView.setAdapter(mAdapter);3)mAdapter.setDataList(dataBean.getInfor());mAdapter.notifyDataSetChanged();4)设置点击事件
注意:获取值的时候的值为 mAdapter.getItem(position)
autoTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (dataBean != null && dataBean.getInfor().size() > 0) { HospitalAndDepartmentBean.InforBean pc = mAdapter.getItem(position); tvPatientInhospital.setText(pc.getOfficeName()); } else { tvPatientInhospital.setText(""); } } });5)Adapter
/** * 医院adapter */ public class HospitalAutoCompleteAdapter extends BaseAdapter implements Filterable { private Context m_context; private LayoutInflater m_Inflater = null; public List<HospitalAndDepartmentBean.InforBean> datas; private ArrayFilter mFilter; private ArrayList<HospitalAndDepartmentBean.InforBean> mUnfilteredData; public HospitalAutoCompleteAdapter(Context context) { m_context = context; m_Inflater = LayoutInflater.from(context); } @Override public int getCount() { if (datas == null || datas.isEmpty()) { return 0; } return datas.size(); } @Override public HospitalAndDepartmentBean.InforBean getItem(int position) { if (position < 0 || position >= datas.size()) { return null; } return datas.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { HospitalAutoCompleteAdapter.ViewHolder holder = null; if (convertView == null) { holder = new HospitalAutoCompleteAdapter.ViewHolder(); convertView = m_Inflater.inflate(R.layout.item_simple_param, parent, false); holder.tv_public_item_simple = (TextView) convertView.findViewById(R.id.tv_public_item_simple); convertView.setTag(holder); } else { holder = (HospitalAutoCompleteAdapter.ViewHolder) convertView.getTag(); } final HospitalAndDepartmentBean.InforBean dataBean = datas.get(position); holder.tv_public_item_simple.setText(dataBean.getOfficeName()); return convertView; } /** * 设置列表数据 * * @param list */ public void setDataList(List<HospitalAndDepartmentBean.InforBean> list) { datas = new ArrayList<HospitalAndDepartmentBean.InforBean>(); datas.addAll(list); notifyDataSetChanged(); } /** * 添加列表数据 * * @param list */ public void addDataList(List<HospitalAndDepartmentBean.InforBean> list) { if (datas == null) { setDataList(list); } else { datas.addAll(list); notifyDataSetChanged(); } } public List<HospitalAndDepartmentBean.InforBean> getData() { return datas; } @Override public Filter getFilter() { if (mFilter == null) { mFilter = new ArrayFilter(); } return mFilter; } private class ViewHolder { TextView tv_public_item_simple; } private class ArrayFilter extends Filter { @Override protected FilterResults performFiltering(CharSequence prefix) { FilterResults results = new FilterResults(); if (mUnfilteredData == null) { mUnfilteredData = new ArrayList<HospitalAndDepartmentBean.InforBean>(datas); } if (prefix == null || prefix.length() == 0) { ArrayList<HospitalAndDepartmentBean.InforBean> list = mUnfilteredData; results.values = list; results.count = list.size(); } else { String prefixString = prefix.toString().toLowerCase(); ArrayList<HospitalAndDepartmentBean.InforBean> unfilteredValues = mUnfilteredData; int count = unfilteredValues.size(); ArrayList<HospitalAndDepartmentBean.InforBean> newValues = new ArrayList<HospitalAndDepartmentBean.InforBean>(count); for (int i = 0; i < count; i++) { HospitalAndDepartmentBean.InforBean pc = unfilteredValues.get(i); if (pc != null) { if (pc.getOfficeName() != null && pc.getOfficeName().startsWith(prefixString)) { newValues.add(pc); } // else if(pc.getEmail()!=null && pc.getEmail().startsWith(prefixString)){ // // newValues.add(pc); // } } } results.values = newValues; results.count = newValues.size(); } return results; } @Override protected void publishResults(CharSequence constraint, FilterResults results) { //noinspection unchecked datas = (List<HospitalAndDepartmentBean.InforBean>) results.values; if (results.count > 0) { notifyDataSetChanged(); } else { notifyDataSetInvalidated(); } } } }
相关文章推荐
- AutoCompleteTextView控件的使用
- AutoCompleteTextView的使用
- android:AutoCompleteTextView和MultAutoCompleteTextView的简单使用
- Android开发系列(二十):AutoCompleteTextView(自己主动完毕文本框)的功能和使用方法
- Android学习笔记(3)---AutoCompleteTextView的使用
- Android:控件AutoCompleteTextView 和MultiAutoCompleteTextView的使用
- AutoCompleteTextView的使用
- AutoCompleteTextView的使用
- AutoCompleteTextView的使用
- Android开发之--Auto Complete TextView的使用
- AutoCompleteTextView的使用及属性详解
- ANDROID笔记:AutoCompleteTextView的简单使用
- AutoCompleteTextView控件的使用
- AutoCompleteTextView使用
- AutoCompleteTextView的使用
- android常用UI使用案例:AutoCompleteTextView
- AutoCompleteTextView的使用
- AutoCompleteTextView使用3
- AutoCompleteTextView输入汉字拼音首字母实现过滤提示(支持多音字,Filterable的使用)
- MultiAutoCompleteTextView和AutoCompleteTextView两个自动完成功能控件的使用