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

Android开发之搜索框SearchView用法示例

程序员文章站 2023-02-15 18:30:51
本文实例讲述了android开发之搜索框searchview用法。分享给大家供大家参考,具体如下: 介绍: searchview时搜索组件,可以让用户输入文字,见他输入...

本文实例讲述了android开发之搜索框searchview用法。分享给大家供大家参考,具体如下:

介绍:

searchview时搜索组件,可以让用户输入文字,见他输入匹配结果

效果:

Android开发之搜索框SearchView用法示例

基本的用法 我就不详细描述了

这里主要说一些我遇到的问题:

如下:

一、点击listview后 让文字自动补全到searchview上:

首先需要设置adapter 然后这只listview的点击事件:

private final string[] mstrings = {"我爱java","安卓无敌","好好学习"};
final arrayadapter adapter = new arrayadapter<string>(this,android.r.layout.simple_list_item_1,mstrings);
listview.setadapter(adapter);

然后对listview添加 item的监听事件:

listview.setonitemclicklistener(new listview.onitemclicklistener() {
  @override
  public void onitemclick(adapterview<?> parent, view view, int position, long id) {
    object string = adapter.getitem(position);
    searchview.setquery(string.tostring(),true);
  }
});

二、删除listview自带过滤器的黑框:

在 onquerytextchange

对adapter设置:adapter.getfilter().filter(newtext.tostring());

@override
public boolean onquerytextchange(string newtext) {
  //如果newtext长度不为0
  if (textutils.isempty(newtext)){
    listview.cleartextfilter();
  }else{
    listview.setfiltertext(newtext);
    //adapter.getfilter().filter(newtext.tostring());//替换成本句后消失黑框!!!
  }
  return true;
}

下面给出效果图的的完整实现方法:

public class mainactivity extends activity {
  private searchview searchview;
  private listview listview;
  //定义自动完成的列表
  private final string[] mstrings = {"我爱java","安卓无敌","好好学习"};
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);
    listview = (listview) findviewbyid(r.id.lv);
    final arrayadapter adapter = new arrayadapter<string>(this,android.r.layout.simple_list_item_1,mstrings);
    listview.setadapter(adapter);
    //为listview启动过滤
    listview.settextfilterenabled(true);
    searchview = (searchview) findviewbyid(r.id.sv);
    //设置searchview自动缩小为图标
    searchview.seticonifiedbydefault(false);//设为true则搜索栏 缩小成俄日一个图标点击展开
    //设置该searchview显示搜索按钮
    searchview.setsubmitbuttonenabled(true);
    //设置默认提示文字
    searchview.setqueryhint("输入您想查找的内容");
    //配置监听器
    searchview.setonquerytextlistener(new searchview.onquerytextlistener() {
      //点击搜索按钮时触发
      @override
      public boolean onquerytextsubmit(string query) {
        //此处添加查询开始后的具体时间和方法
        toast.maketext(mainactivity.this,"you choose:" + query,toast.length_short).show();
        return false;
      }
      @override
      public boolean onquerytextchange(string newtext) {
        //如果newtext长度不为0
        if (textutils.isempty(newtext)){
          listview.cleartextfilter();
        }else{
          listview.setfiltertext(newtext);
//          adapter.getfilter().filter(newtext.tostring());//替换成本句后消失黑框!!!
        }
        return true;
      }
    });
    listview.setonitemclicklistener(new listview.onitemclicklistener() {
      @override
      public void onitemclick(adapterview<?> parent, view view, int position, long id) {
        object string = adapter.getitem(position);
        searchview.setquery(string.tostring(),true);
      }
    });
  }
}

最后给出布局如下:

<?xml version="1.0" encoding="utf-8" ?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical">
  <!--定义一个searchview-->
  <searchview
    android:id="@+id/sv"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>
  <!--定义自动完成的listview-->
  <listview
    android:id="@+id/lv"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"/>
</linearlayout>

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

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