大佬教程收集整理的这篇文章主要介绍了android – 将AutoCompleteTextView过滤器从“startsWith”更改为“Contains”?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
autocomplete_item.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://@R_616_10906@mas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="Medium Text" android:paddingLeft="8dp" android:paddingRight="8dp" android:paddingTop="16dp" android:paddingBottom="16dp" android:id="@+id/lbl_name" /> </RelativeLayout>
为您的名称创建新类:
public class Names { public String name; }
NamesAdapter
public class NamesAdapter extends ArrayAdapter<Names> { Context context; int resource,textViewresourcEID; List<Names> items,tempItems,suggestions; public NamesAdapter(Context context,int resource,int textViewresourcEID,List<Names> items) { super(context,resource,textViewresourcEID,items); this.context = context; this.resource = resource; this.textViewresourcEID = textViewresourcEID; this.items = items; tempItems = new ArrayList<Names>(items); // this makes the difference. suggestions = new ArrayList<Names>(); } @Override public View getView(int position,View convertView,ViewGroup parent) { View view = convertView; if (convertView == null) { LayoutInflater inflater = (LayoutInflater) context.getSystemservice(Context.LAYOUT_INFLATER_serviCE); view = inflater.inflate(R.layout.autocomplete_item,parent,falsE); } Names names = items.get(position); if (names != null) { TextView lblName = (TextView) view.findViewById(R.id.lbl_Name); if (lblName != null) lblName.setText(names.Name); } return view; } @Override public Filter getFilter() { return nameFilter; } /** * Custom Filter implementation for custom suggestions we provide. */ Filter nameFilter = new Filter() { @Override public CharSequence convertResultToString(Object resultvalue) { String str = ((Names) resultvalue).name; return str; } @Override protected FilterResults performFiltering(CharSequence consTraint) { if (consTraint != null) { suggestions.clear(); for (Names names : tempItems) { if (names.name.toLowerCase().contains(consTraint.toString().toLowerCase())) { suggestions.add(names); } } FilterResults filterResults = new FilterResults(); filterResults.values = suggestions; filterResults.count = suggestions.size(); return filterResults; } else { return new FilterResults(); } } @Override protected void publishResults(CharSequence consTraint,FilterResults results) { List<Names> filterList = (ArrayList<Names>) results.values; if (results != null && results.count > 0) { clear(); for (Names names : filterList) { add(names); notifyDataSetChanged(); } } } }; }
SearchActivity(或您的主要活动)
.... List<Names> namesList = //your names list; NamesAdapter namesAdapter = new NamesAdapter( SearchActivity.this,R.layout.activity_search,R.id.lbl_name,namesList ); //set adapter into liststudent autoCompleteTextView.setAdapter(namesAdapter); autoCompleteTextView.showDropDown(); ...
以上是大佬教程为你收集整理的android – 将AutoCompleteTextView过滤器从“startsWith”更改为“Contains”?全部内容,希望文章能够帮你解决android – 将AutoCompleteTextView过滤器从“startsWith”更改为“Contains”?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。