【问题标题】:Filter Json Listview With a EditText Android使用 EditText Android 过滤 Json Listview
【发布时间】:2017-12-12 18:25:57
【问题描述】:

尝试使用编辑文本过滤我的列表视图,每次我输入一些文本时,列表视图都会变为空白,谁能告诉我我做错了什么以及如何解决这个问题

search.addTextChangedListener(new TextWatcher (){
    public void afterTextChanged(Editable arg0) {
        // TODO Auto-generated method stub

    }

    public void beforeTextChanged(CharSequence arg0, int arg1,
    int arg2, int arg3) {
        // TODO Auto-generated method stub

    }

    public void onTextChanged(CharSequence cs, int arg1, int arg2,
    int arg3) {
        // TODO Auto-generated method stub



        String searchString = cs.toString();//wsSearch.getText().toString();
       /* if(searchString.length() != 2) {
            adapter2 = new Adapter(MainActivity.this, array);
            listView.setAdapter(adapter2);
            return;
        }*/
        for (int i = 0; i < array.size(); i++)
        {
            String currentString = array.get(i).getTitulo();
            if (searchString.equalsIgnoreCase(currentString))
            {
                mTemp.add(array.get(i));
            }
        }
        adapter2 = new Adapter(MainActivity.this, mTemp);
        listView.setAdapter(adapter2);

    }



});
}

【问题讨论】:

    标签: android json listview arraylist


    【解决方案1】:

    试试这个:

        search.addTextChangedListener(new TextWatcher(){
            public void afterTextChanged(Editable arg0) {
                // TODO Auto-generated method stub
                String searchString = arg0.toString();//wsSearch.getText().toString();
       /* if(searchString.length() != 2) {
            adapter2 = new Adapter(MainActivity.this, array);
            listView.setAdapter(adapter2);
            return;
        }*/     
                mTemp.clear()
                for (int i = 0; i < array.size(); i++)
                {
                    String currentString = array.get(i).getTitulo();
                    if (currentString.contains(searchString))
                    {
                        mTemp.add(array.get(i));
                    }
                }
                adapter2 = new Adapter(MainActivity.this, mTemp);
                listView.setAdapter(adapter2);
    
            }
    
            public void beforeTextChanged(CharSequence arg0, int arg1,
                                          int arg2, int arg3) {
                // TODO Auto-generated method stub
    
            }
    
            public void onTextChanged(CharSequence cs, int arg1, int arg2,
                                      int arg3) {
                // TODO Auto-generated method stub
                //BAPTISMAL_SONG.this.adapter2.getFilter().filter(cs);
    
    
    
    
            }
    
    
    
        });
    

    希望这会有所帮助。

    【讨论】:

    • 感谢您的回答,当我输入产品名称时,它会过滤,但它会在我的列表视图中显示相同的产品 5 倍,如果我删除文本并添加新内容,它会保留这 5 个并添加5more 来自新产品
    • 我将编辑答案。我忘了添加清除列表。
    • 如果您发现答案正确,请将其标记为正确并点赞。做到这一点需要付出很多努力。 :D
    • 我投了赞成票,但由于总是有 1-2 人反对我的帖子,我需要等待一段时间才能确认我的投票,谢谢,已解决
    • 谢谢。编码愉快。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 2018-11-29
    • 2013-10-13
    • 2011-07-10
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多