0

嘿伙计们,搜索我的对象列表的最佳方法是什么,它们返回一些字符串,例如姓氏和名字。

这是我目前的搜索方式,但我的搜索需要匹配我不想要的整个字符串。搜索需要它匹配字符串的一部分,例如我们手机上的联系人列表并忽略大小写。

if (searchQ.equalsIgnoreCase(child.first_name)) {
   addChildToList(child); 
    } 

我试过包含并开始,例如,他们没有工作。这是怎么回事?

谢谢!干杯!

4

1 回答 1

1

您可以使用 TextWatcher 在列表中进行搜索,例如,您可以通过以下方式为 EditText(搜索框)定义 TextWatcher:

TextWatcher filterTextWatcher = new TextWatcher() { //TextWatcher to Filter RealTime Input Data
            public void beforeTextChanged(CharSequence s, int start, int count,int after)
            {
            }

            public void onTextChanged(CharSequence s,int start, int before,int count)   //Filter Data When Entering Data On ItemType Dialog TextView
            {
            }

            @Override
            public void afterTextChanged(Editable arg0) 
            {   
            }
        };

        EditText filterText = (EditText)dialog.findViewById(R.id.edtItemFilter);
        filterText.addTextChangedListener(filterTextWatcher);

然后在 onTextChange() 回调函数中,您可以将插入的字符作为参数 s 发送到您的适配器,以使用 getFilter 过滤您的 List 或使用过滤的 Cursor 设置您的列表:

public void onTextChanged(CharSequence s,int start, int before,int count)
        {
            ListView lv = getListView();
            ListAdapter adapter = (ListAdapter) lv.getAdapter();
            lv.setTextFilterEnabled(true);
            adapter.getFilter().filter(s.toString());
        }
于 2013-07-03T05:32:59.220 回答