MainActivity is as follows:
Package cc. testfilterable; import java. util. arrayList; import java. util. hashMap; import android. OS. bundle; import android. widget. listView; import android. app. activity; import android. content. context;/*** Demo Description: * using Filter to Filter data * can be used for AutoCompleteTextView data filtering and other functions ** Note: * This Demo only describes the principle and the code logic is simple, there are some minor bugs. * For complete applications, see the following documents. ** reference: * 1 http://gundumw100.iteye.com/blog/1446507 * 2 http://blog.csdn.net/ssstudio/article/details/7579089 * 3 http://blog.csdn.net/jiahui524/article/details/7802033 **/public class MainActivity extends Activity {private Context mContext; private ListView mListView; private ListViewAdapter mListViewAdapter; private ArrayList <String> mArrayList; private HashMap <String, String> mHashMap; @ Overrideprotected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R. layout. main); init ();} private void init () {mContext = this; mListView = (ListView) findViewById (R. id. listView); mArrayList = new ArrayList <String> (); mArrayList. add ("Zhang San 1"); mArrayList. add ("Li Si 1"); mArrayList. add ("Wang Wu 1"); mArrayList. add ("Zhang San 2"); mArrayList. add ("Li Si 2"); mArrayList. add ("Wang Wu 2"); mArrayList. add ("James 3"); mArrayList. add ("Li Si 3"); mArrayList. add ("Wang Wu 3"); mArrayList. add ("James 4"); mArrayList. add ("Li Si 4"); mArrayList. add (" 4 4"); mListViewAdapter = new ListViewAdapter (mContext, mArrayList); // filter data // filter out the data mListViewAdapter whose name contains "Zhang. getFilter (). filter ("Zhang"); mListView. setAdapter (mListViewAdapter );}}
The ListViewAdapter is as follows:
Package cc. testfilterable; import java. util. arrayList; import java. util. iterator; import java. util. list; import android. content. context; import android. view. layoutInflater; import android. view. view; import android. view. viewGroup; import android. widget. baseAdapter; import android. widget. filter; import android. widget. filterable; import android. widget. textView; public class ListViewAdapter extends BaseAdapter imp Lements Filterable {private NameFilter mNameFilter; private List <String> mArrayList; private List <String> mFilteredArrayList; private LayoutInflater mLayoutInflater; public ListViewAdapter (Context context, List <String> arrayList) {mArrayList = arrayList; mLayoutInflater = LayoutInflater. from (context); mFilteredArrayList = new ArrayList <String> () ;}@ Overridepublic int getCount () {if (mArrayList = null) {return 0;} else {return (mArrayList. size () ;}@ Overridepublic Object getItem (int position) {if (mArrayList = null) {return null;} else {return mArrayList. get (position) ;}@ Overridepublic long getItemId (int position) {return position ;}// this method comes from the interface Filterable @ Overridepublic Filter getFilter () {if (mNameFilter = null) {mNameFilter = new NameFilter () ;}return mNameFilter ;}@ Overridepublic View getView (int Position, View convertView, ViewGroup parent) {View itemView = null; itemView = convertView; ViewHolder viewHolder = null; if (itemView = null) {itemView = mLayoutInflater. inflate (R. layout. listviewitem, null); viewHolder = new ViewHolder (); viewHolder. textView = (TextView) itemView. findViewById (R. id. textView); itemView. setTag (viewHolder);} else {viewHolder = (ViewHolder) itemView. getTag ();} if (mArrayLi St! = Null) {if (viewHolder. textView! = Null) {viewHolder. textView. setText (mArrayList. get (position) ;}} convertView = itemView; return convertView;} private class ViewHolder {TextView textView ;} // Filter data class NameFilter extends Filter {// execute Filter @ character FilterResults extends mfiltering (CharSequence charSequence) {FilterResults filterResults = new FilterResults (); for (Iterator <String> iterator = mArrayList. iterator (); iterator. hasNext ();) {String name = iterator. next (); System. out. println ("---> name =" + name); if (name. contains (charSequence) {mFilteredArrayList. add (name) ;}} filterResults. values = mFilteredArrayList; return filterResults;} // filter result @ Overrideprotected void publishResults (CharSequence arg0, FilterResults results) {mArrayList = (List <String>) results. values; if (results. count> 0) {policydatasetchanged ();} else {policydatasetinvalidated ();}}}}
Listviewitem. xml is as follows:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="50dip" android:gravity="center" /> </LinearLayout>
Zookeeper