Android实现简易搜索的简单办法

本文介绍了一种作者自行设计的简单名称搜索方法,通过避免复杂的过滤器,仅针对搜索关键词在名称中的位置进行判断,同时利用数组长度判断相关性,提升搜索效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为需要到搜索方法,我上网查看了一下别人的搜索方法,使用过滤器之类的,发现别人的功能虽然强大,但是同样的复杂。我只需要简单的名称搜索,所以自己尝试写了一下。
简单来说我的搜索思路就是:
1.获取搜索的字段,如果搜索名字带李的,就输入一个李字。
2.将搜索的字段作为split的切割符,让每个item逐个去切割,若切割成功,生成的String数组size大于2,说明包含改字段,然后添加到新的item数组里面。
3.这里面存在一个问题就是当这个切割符是第一位或者最后一位时,即便包含切割符缺个成功生成的数组还是一个,所以,需要在切割后数组大小为一的item进行再一次匹配,用String的indexof和lastindexof的方法对头尾再进行一次判断,若包含则添加进数组展示。
其实这里搜索完全可以不需要第二步,直接进行第三步从头到尾判断一遍就行,这里的第二步有其他作用,进行第二步的话,通过切割生成的数组大小又可以进行相关性大小的简单判断,通过切割数组大小来排序,相关性大的在前。

下面时简单的示范,代码不完整:

public void dialogSearch(){
        String ss = ed_dialog_search.getText().toString();
        if (!ss .equals("")){
            alist.clear();
            for (int i =0;i<dataList.size();i++){
                Log.d(TAG, "dialogSearch: "+1);
                if (dataList.get(i).get("name").toString().indexOf(ss,dataList.get(i).get("name").toString().length()-1) != -1){
                    alist.add(dataList.get(i));
                }
                String[] aa = dataList.get(i).get("name").toString().split(ss);
                if (aa.length>1){
                    alist.add(dataList.get(i));
                }
                showListView2(alist);
            }
        }else showListView2(dataList);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小周bb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值