Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
搜索不起作用的Android列表_Android_Android Json_Android Search - Fatal编程技术网

搜索不起作用的Android列表

搜索不起作用的Android列表,android,android-json,android-search,Android,Android Json,Android Search,filterTextwatcher的问题在于:我的应用程序,当数据与名字中的值匹配时显示2条记录,当记录与名字中的值匹配时显示1条记录 示例:当我键入M时,它将显示mary的2条记录,但当我键入k时,它将显示mary kom的1条记录和Karl加上json数据的2条记录,请参见下面的json { "details": [ { "id": "01", "name": "Mary Kom",

filterTextwatcher的问题在于:我的应用程序,当数据与名字中的值匹配时显示2条记录,当记录与名字中的值匹配时显示1条记录

示例:当我键入M时,它将显示mary的2条记录,但当我键入k时,它将显示mary kom的1条记录和Karl加上json数据的2条记录,请参见下面的json

{
"details": [

        {
                "id": "01",
                "name": "Mary Kom",
                "email": "abc@uvw.in",
                "address": "xx-xx-xxxx,x - street, x - country",
                "gender" : "male",
                "phone": {
                    "mobile": "+91 0000000000",
                    "home": "00 000000",
                    "office": "00 000000"
                }
        },


        {
                "id": "02",
                "name": "karl plus",
                "email": "pqrp@gmail.com",
                "address": "xx-xx-xxxx,x - street, x - country",
                "gender" : "male",
                "phone": {
                    "mobile": "+91 0000000000",
                    "home": "00 000000",
                    "office": "00 000000"
                }
        }
]}
代码:


我认为这是SimpleAdapter过滤器的默认行为。您想要实现的是,您需要实现自己的自定义过滤器。 请参见此处的示例:-

更改此代码: //过滤类

 public void filter(String charText) {
            charText = charText.toLowerCase(Locale.getDefault());
            worldpopulationlist.clear();
            if (charText.length() == 0) {
                worldpopulationlist.addAll(arraylist);
            } 
            else 
            {
                for (WorldPopulation wp : arraylist) 
                {
                    if (wp.getCountry().toLowerCase(Locale.getDefault()).contains(charText)) 
                    {
                        worldpopulationlist.add(wp);
                    }
                }
            }
            notifyDataSetChanged();
        }

它可以帮助您实现功能


那么问题是什么?你们有什么例外吗?很好的第一篇帖子,但正如沙泽布指出的,你们错过了你们的问题所在。请阅读,这将帮助您重新表述您的问题,以便获得可能的答案。@Vinay:我们需要更多细节,如适配器代码。!!因为我认为你需要覆盖适配器的过滤方法,所以。。!!Thanx for reply根本没有bug,即使搜索效果很好,它也可以正常工作,但唯一的问题是,当搜索字母与名字中的值匹配时,它会显示2条记录,而同一个字母只有1条记录。但是当搜索值与姓氏中的值匹配时,显示就完美了
 public void filter(String charText) {
            charText = charText.toLowerCase(Locale.getDefault());
            worldpopulationlist.clear();
            if (charText.length() == 0) {
                worldpopulationlist.addAll(arraylist);
            } 
            else 
            {
                for (WorldPopulation wp : arraylist) 
                {
                    if (wp.getCountry().toLowerCase(Locale.getDefault()).contains(charText)) 
                    {
                        worldpopulationlist.add(wp);
                    }
                }
            }
            notifyDataSetChanged();
        }
public void filter(String charText) {
            charText = charText.toLowerCase(Locale.getDefault());
            worldpopulationlist.clear();
            if (charText.length() == 0) {
                worldpopulationlist.addAll(arraylist);
            } 
            else 
            {
                for (WorldPopulation wp : arraylist) 
                {
                    if (wp.getCountry().toLowerCase(Locale.getDefault()).startsWith(charText)) 
                    {
                        worldpopulationlist.add(wp);
                    }
                }
            }
            notifyDataSetChanged();
        }