android开发分享Android实现简单动态搜索功能

前言提到android的动态搜索,大多应该会想到edittext的文本改变的监听器(addtextchangedlistener),本文会简单介绍一下,但是本文介绍的是searchview+listv

上述就是android开发分享Android实现简单动态搜索功能的全部内容,如果对大家有所用处且需要了解更多关于Android学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

前言

提到android的动态搜索,大多应该会想到edittext的文本改变的监听器(addtextchangedlistener),android开发分享Android实现简单动态搜索功能会简单介绍一下,但是android开发分享Android实现简单动态搜索功能介绍的是searchview+listview的实现。

效果图:

Android实现简单动态搜索功能

一、addtextchangedlistener

使用这种方式的思路简述就是,当监听到文本改变时,就用handler post一个runnable去做相应的改变,动态修改listview的显示。

二、android开发分享Android实现简单动态搜索功能案例

1.介绍一下searchview的一些方法

  • seticonified():设置搜索框直接展开显示。左侧有放大镜(在搜索框中) 右侧有叉叉 可以关闭搜索框
  • seticonifiedbydefault():设置搜索框直接展开显示。左侧有放大镜(在搜索框外) 右侧无x样式点击按钮 有输入内容后有x样式点击按钮 不能关闭搜索框
  • onactionviewexpanded():设置搜索框直接展开显示。左侧有无放大镜(在搜索框中) 右侧无叉叉 有输入内容后有x样式点击按钮, 不能关闭搜索框
  • setonquerytextlistener():为 searchview 中的用户操作设置侦听器。
  • setsubmitbuttonenabled():当查询非空时启用显示提交按钮。
  • setqueryhint():查询提示语句

2.准备数据

本案例使用一个string数组

private final string[] mstrings = cheeses.scheesestrings;

3.初始化以及填充数据

msearchview = (searchview) findviewbyid(r.id.search_view);          mlistview = (listview) findviewbyid(r.id.list_view);          mlistview.setadapter(madapter = new arrayadapter<>(this,                  android.r.layout.simple_list_item_1,                  mstrings));          //设置是否可以通过键盘输入的字符来过滤掉不需要的选项,定位到需要的选项。          mlistview.settextfilterenabled(true);          setupsearchview();
private void setupsearchview() {          //设置搜索框直接展开显示。左侧有放大镜(在搜索框中) 右侧有叉叉 可以关闭搜索框          //msearchview.seticonified(false);          //设置搜索框直接展开显示。左侧有放大镜(在搜索框外) 右侧无叉叉 有输入内容后有叉叉 不能关闭搜索框          //msearchview.seticonifiedbydefault(false);          //设置搜索框直接展开显示。左侧有无放大镜(在搜索框中) 右侧无叉叉 有输入内容后有叉叉 不能关闭搜索框          msearchview.onactionviewexpanded();          //为 searchview 中的用户操作设置侦听器。          msearchview.setonquerytextlistener(this);          //当查询非空时启用显示提交按钮。          msearchview.setsubmitbuttonenabled(false);          //查询提示语句          msearchview.setqueryhint(getstring(r.string.cheese_hunt_hint));      }

4.在searchview中用户输入字符时激发方法里写入简单逻辑

//用户输入字符时激发该方法  public boolean onquerytextchange(string newtext) {          if (textutils.isempty(newtext)) {              mlistview.cleartextfilter();          } else {              mlistview.setfiltertext(newtext.tostring());          }          return true;      }

三、源码

jimengsearchview.java

public class jimengsearchview extends activity implements searchview.onquerytextlistener {      private searchview msearchview;      private listview mlistview;      private arrayadapter<string> madapter;        private final string[] mstrings = cheeses.scheesestrings;        @override      protected void oncreate(bundle savedinstancestate) {          super.oncreate(savedinstancestate);          getwindow().requestfeature(window.feature_action_bar);            setcontentview(r.layout.searchview_filter);            msearchview = (searchview) findviewbyid(r.id.search_view);          mlistview = (listview) findviewbyid(r.id.list_view);          mlistview.setadapter(madapter = new arrayadapter<>(this,                  android.r.layout.simple_list_item_1,                  mstrings));          //设置是否可以通过键盘输入的字符来过滤掉不需要的选项,定位到需要的选项。          mlistview.settextfilterenabled(true);          setupsearchview();          mlistview.setonitemclicklistener(new adapterview.onitemclicklistener() {              @override              public void onitemclick(adapterview<?> parent, view view, int position, long id) {                  string str = (string)((textview) view).gettext();                  toast.maketext(jimengsearchview.this,str,toast.length_short).show();              }          });      }        private void setupsearchview() {          //设置搜索框直接展开显示。左侧有放大镜(在搜索框中) 右侧有叉叉 可以关闭搜索框          //msearchview.seticonified(false);          //设置搜索框直接展开显示。左侧有放大镜(在搜索框外) 右侧无叉叉 有输入内容后有叉叉 不能关闭搜索框          //msearchview.seticonifiedbydefault(false);          //设置搜索框直接展开显示。左侧有无放大镜(在搜索框中) 右侧无叉叉 有输入内容后有叉叉 不能关闭搜索框          msearchview.onactionviewexpanded();          //为 searchview 中的用户操作设置侦听器。          msearchview.setonquerytextlistener(this);          //当查询非空时启用显示提交按钮。          msearchview.setsubmitbuttonenabled(false);          //查询提示语句          msearchview.setqueryhint(getstring(r.string.cheese_hunt_hint));      }      //用户输入字符时激发该方法      public boolean onquerytextchange(string newtext) {          if (textutils.isempty(newtext)) {              mlistview.cleartextfilter();          } else {              mlistview.setfiltertext(newtext.tostring());          }          return true;      }        public boolean onquerytextsubmit(string query) {          return false;      }  }

布局文件:

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"          android:layout_width="match_parent"          android:layout_height="match_parent"          android:orientation="vertical">      <searchview              android:id="@+id/search_view"              android:layout_width="match_parent"              android:layout_height="wrap_content"/>      <listview              android:id="@+id/list_view"              android:layout_width="match_parent"              android:layout_height="match_parent"              android:layout_weight="1"/>    </linearlayout>

strings.xml

<string name="cheese_hunt_hint">请输入要查询的内容</string>

cheeses.java

public class cheeses {        public static final string[] scheesestrings = {              "android自定义view之3d正方体","计蒙不吃鱼","android自定义view之利用drawarc方法实现动态效果","android 3d效果的实现","okhttp源码解析",              "android翻转动画(卡片翻转效果)","android自定义view之围棋动画","android自定义view之模仿登录界面文本输入框(华为云app)",              "android自定义view之太极图","android自定义view获取attr中自定义颜色的问题","android对抗反编译","android常用的room增删改查语句(外部数据库)",              "android用canvas画一个折线图,并加以简单封装","android用canvas画一个真正能跑的跑马灯","android网络小说阅读器的实现",              "android护眼模式(argb)","android约束布局constraintlayout","android实现edittext的抖动效果"      };    }

以上就是android开发分享Android实现简单动态搜索功能的全部内容,希望对大家的学习有所帮助,也希望大家多多支持<猴子技术宅>。

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/adkf/1092026.html

(0)
上一篇 1天前
下一篇 18小时前

精彩推荐

发表评论

您的电子邮箱地址不会被公开。