中国优质的IT技术网站
专业IT技术创作平台
IT职业在线教育平台
所需要的代码如下,
public class MyProvider extends RecycleItemProvider { private List<String> mSourceList; private List<String> mList; private NameFilter mNameFilter; public MyProvider(List<String> list) { this.mList = list; this.mSourceList = list; } @Override public int getCount() { return null!=mList?mList.size():0; } @Override public Object getItem(int i) { return null!=mList?mList.get(i):null; } @Override public long getItemId(int i) { return i; } @Override public Component getComponent(int i, Component component, ComponentContainer componentContainer) { return null; } @Override public TextFilter getFilter() { if(mNameFilter==null){ mNameFilter = new NameFilter(); } return mNameFilter; } class NameFilter extends TextFilter{ @Override protected FilterResults executeFiltering(CharSequence charSequence) { FilterResults filterResults = new FilterResults(); if(charSequence==null){ filterResults.results=mSourceList; }else{ List<String> filteredList= new ArrayList<>(); for (Iterator<String> iterator = mList.iterator();iterator.hasNext();){ String name = iterator.next(); if(name.contains(charSequence)){ filteredList.add(name); } } filterResults.results = filteredList; } return filterResults; } @Override protected void publishFilterResults(CharSequence charSequence, FilterResults filterResults) { mList = (List<String>) filterResults.results; if(filterResults.size>0){ notifyDataChanged(); }else{ notifyDataInvalidated(); } } } } textField.addTextObserver(new Text.TextObserver() { @Override public void onTextUpdated(String s, int i, int i1, int i2) { if(s.length()==0){ textField.removeTextObserver(this); provider.getFilter().filter(s); provider.notifyDataChanged(); textField.addTextObserver(this); }else { textField.removeTextObserver(this); provider.getFilter().filter(null); provider.notifyDataChanged(); textField.addTextObserver(this); } } });
微信扫码分享
要是能把运行效果的截图附上就更好了^_^
要是能把运行效果的截图附上就更好了^_^