欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android编程实现输入框动态自动提示功能

程序员文章站 2023-12-14 21:13:34
本文实例讲述了android编程实现输入框动态自动提示功能。分享给大家供大家参考,具体如下: 关于autocompletetextview的使用,我想大家并不陌生,对其设...

本文实例讲述了android编程实现输入框动态自动提示功能。分享给大家供大家参考,具体如下:

关于autocompletetextview的使用,我想大家并不陌生,对其设定上adapter后系统便能自己识别与匹配了。近期 一个项目中,需要做到匹配通迅录中的电话号码和联系人,由于通迅录中数据量大,所以把所有的数据在自己提示之前就查询出来并加入到 autocompletetextview中是不现实的,所以我们可以使用cursor来动态加载autocompletetextview的数据,从而 实现时时搜索提示,要实现动态加载,只用重写一个类继承于cursoradapter,然后设定在autocompletetextview上就行了。

Android编程实现输入框动态自动提示功能

autocompletetextview editnumber = (autocompletetextview)findviewbyid(r.id.edit_number);
cursor cursor = getcontentresolver()(contactscontract.commondatakinds.phone.content_uri, null, null, null, null);
contactlistadapter listadapter = new contactlistadapter(this, cursor);
editnumber.setadapter(listadapter);

contactlistadapter.java中的核心代码如下:

重写newview方法

public view newview(context context, cursor cursor, viewgroup parent) {
  final layoutinflater inflater = layoutinflater.from(context);
  final view view = (view)inflater.inflate(  r.layout.auto_complete, parent, false);
  textview txtname = (textview)view.findviewbyid(r.id.txt_name);
  txtname.settext(cursor.getstring(0));
  textview txtnumber = (textview)view.findviewbyid(r.id.txt_number);
  txtnumber.settext(cursor.getstring(1));
  textview txttype = (textview)view.findviewbyid(r.id.txt_type);
  string[] arrtype = smsconstant.arr_contacts_type;
  if(cursor.getint(2) > 3)
  {
    txttype.settext(arrtype[0]);
  } else
  {
    txttype.settext(arrtype[cursor.getint(2)]);
  }
  return view;
}

重写bindview方法,

public void bindview(view view, context context, cursor cursor) {
  textview txtname = (textview)view.findviewbyid(r.id.txt_name);
  txtname.settext(cursor.getstring(0));
  textview txtnumber = (textview)view.findviewbyid(r.id.txt_number);
  txtnumber.settext(cursor.getstring(1));
  textview txttype = (textview)view.findviewbyid(r.id.txt_type);
  string[] arrtype = smsconstant.arr_contacts_type;
  if(cursor.getint(2) > 3)
  {
    txttype.settext(arrtype[0]);
  } else {
    txttype.settext(arrtype[cursor.getint(2)]);
  }
}

点击弹出的listview列表后的返回值:

public string converttostring(cursor cursor) {}

执行搜索的sql语句,返回一个cursor加载到弹出的listview上

public cursor runqueryonbackgroundthread(charsequence constraint) {}

在此所返回的cursor结果,会全部显示在弹出提示上,无需再次过虑。

更多关于android相关内容感兴趣的读者可查看本站专题:《android视图view技巧总结》、《android布局layout技巧总结》、《android图形与图像处理技巧总结》、《android开发入门与进阶教程》、《android调试技巧与常见问题解决方法汇总》、《android多媒体操作技巧汇总(音频,视频,录音等)》、《android基本组件用法总结》及《android控件用法总结

希望本文所述对大家android程序设计有所帮助。

上一篇:

下一篇: