如何正确过滤ListView中的文本?

Cur*_*ain 6 search android filter

我试图从我的EditText框中过滤我的ListView,但是目前它没有用.

我有一个正确获取数据的ListView,它们使用ArrayAdapter类和我自己的ArrayList类添加到我自己的ListView中.例如,当我输入"table"时,我希望它从我的ListView中加载的标题中排序,而不是它应该显示剩下的项目和匹配表.

我目前的代码:

private ArrayList<Order> orders; /* ArrayList class with my own Order class to 
define title, info etc. */
private OrderAdapter adapter; //Own class that extends ArrayAdapter

orders = new ArrayList<Order>();
adapter = new OrderAdapter(this, R.layout.listrow, orders); /* listrow defining a
single item in my ListView */
setListAdapter(adapter); //Set our adapter to a ListView

search.addTextChangedListener(filterTextWatcher); //search is my EditText

private TextWatcher filterTextWatcher = new TextWatcher() {

    public void afterTextChanged(Editable s) {

    }

    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
    }

    public void onTextChanged(CharSequence s, int start, int before,
            int count) {
        adapter.getFilter().filter(s); //Filter from my adapter
        adapter.notifyDataSetChanged(); //Update my view
    }

};
Run Code Online (Sandbox Code Playgroud)

好的,我怎么能实现这个目标呢?当我在EditText框中输入一些值时,即使有匹配,一切都会消失.

提前致谢并告诉我你是否需要更多的代码片段或者这个问题我还不清楚!

onl*_*ygo 6

ArrayAdapter实现的内置过滤器通过调用toString()方法将包含的对象转换为字符串.这个字符串将用于执行匹配.如果您只是尝试匹配Order对象中的一个字符串字段,则可以覆盖Order类的toString()方法以返回该字段.如果您想要执行更灵活的匹配,例如匹配多个字段,请查看此帖子,其中显示了如何创建自定义过滤器:

使用ArrayAdapter在Android中自定义过滤