安卓输入框实时模糊搜索
许多开发场景都使用搜索框实时模糊搜索,以允许用户输入内容。 请参照图
这种做法是在EditText字符发生变化时弹出ListPopupwindow来更新列表,谷歌已经被封装为AutoCompleteTextView
使用方法
mautocompletetextview.set adapter (adapter;
mautocompletetextview.setfocus able (true;
mautocompletetextview.setonitemclicklistener (newadapterview.onitemclicklistener () {
@Override
publicvoidonitemclick (adapterviewparent,View view,int position,long id ) {
}
);
适配器定制
要使Adapter继承BaseApdater,必须实现文件接口
privateclasssearchadapterextendsbaseadapterimplementsfilterable {
私有上下文m上下文;
publicsearchadapter (上下文上下文) {
super (;
this.mContext=context;
}
@Override
公共获取计数
if(msearchcustomentities==null({ ) (
返回0;
} else {
returnmsearchcustomentities.size (;
}
}
@Override
publicobjectgetitem (int position ) {
if(msearchcustomentities==null({ ) (
返回空值;
} else {
returnmsearchcustomentities.get (position;
}
}
@Override
publiclonggetitemid (int position ) {
返回位置;
}
@Override
publicviewgetview(intposition,View convertView,ViewGroup parent ) {
ViewHolder holder=null;
转换视图==null (if ) {
holder=new ViewHolder (;
convert view=layoutinflater.from (m context ).inflate (r.layout.item _ search _ custom,null,false );
holder.tag=(textview ) convert view.findviewbyid (r.id.TV _ custome _ type );
holder.name=(textview ) convert view.findviewbyid (r.id.custom _ name );
holder.phone=(TextView ) convert view.findviewbyid (r.id.TV _ phone );
convertview.settag(holder;
} else {
holder=(viewholder ) convertView.getTag );
}
holder.phone.settext (msearchcustomentities.get ) position ).phone );
holder.name.settext (msearchcustomentities.get (position ).name );
msearchcustomentities.get (position ).type==customer type.temporary _ customer.gettype ) }
holder.tag.set visibility (view.visible;
holder.tag.settext (m context.getstring (r.string.tag _ temp ) );
holder.tag.settext color (m context.get resources ).getcolor (r.color.customer _ temp _ txt ) );
holder.tag.set background (m context.get resources ).get drawable.rawable.BG _ solid _ quote _ type _ inneeee
} else if (msearchcustomentities.get (position ).type==customer type.collective _ unit.gettype () )。
holder.tag.set visibility (view.visible;
holder.tag.settext (m context.getstring ) r.string.tag_unit;
holder.tag.settext color (m context.get resources ).getcolor (r.color.customer _ unit _ txt ) );
holder.tag.set background (m context.get resources ).get drawable.rawable.BG _ solid _ quote _ type _ inneeee
} else if (msearchcustomentities.get (position ).type==customer type.outer _ motorcade.gettype () )。
holder.tag.set visibility (view.visible;
holder.tag.settext (m context.getstring ) r.string.tag_car;
holder.tag.settext color (m context.get resources ).getcolor (r.color.customer _ car _ txt ) );
holder.tag.set background (m context.get resources ).get drawable.rawable.BG _ solid _ quote _ type _ inneeee
} else {
holder.tag.set visibility (view.gone );
}
return convertView;
}
@Override
公共过滤器过滤器
if(mfilter==null ) {
mFilter=new ArrayFilter (;
}
返回m过滤器;
}
private class ViewHolder { (
textview标签;
TextView name;
TextView phone;
}
自定义筛选器
privateclassarrayfilterextendsfilter {
@Override
保护性文件保护
filterresultsresults=newfilterresults (;
stringprefixstring=prefix.tostring (;
//筛选部分
xbc client.getcustomlist (prefix string,new EntitiesObserver ) )。
@Override
protectedvoidongot (list entities,String msg,int errCode ) {
if (实体!=nullEntities.size(0) {
mSearchCustomEntities.clear (;
msearchcustomentities.addall (entities;
msearchadapter.notifydatasetchanged (;
}else{
msearchcustomentities=nullmsearchcustomentities.size {
mSearchCustomEntities.clear (;
msearchadapter.notifydatasetinvalidated (
}
}
}
);
results.values=msearchcustomentities;
results.count=msearchcustomentities.size (;
返回结果;
}
总结
到此为止,这里介绍了关于Android输入框实时模糊搜索效果的示例代码的文章。 更多相关安卓输入框实时模糊搜索内容,请搜索自由发展网以前的文章,或继续阅读以下相关文章。 今后,请多多支持自由开发网。