您的位置:首页 > 其它

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();
}
}

}
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: