如何使AutoCompleteTextView适配器找到phoneNumber?

时间:2015-07-07 13:09:59

标签: android

我的适配器搜索联系电话号码列表。

当用户开始在AutoCompleteTextView中键入数字时,该数字将被格式化...

所以它看起来像050 -...

只有在更多数字之后,它才会变为:(050)111-11 ..

因此AutoCompleteTextView的适配器找不到数字......

(联系电话号码格式如:(050)555-555-5和从TextView接受的号码目前为050-11)

我的问题:我可以告诉适配器搜索没有非数字字符吗? 我不知道做什么功能。

1 个答案:

答案 0 :(得分:3)

    SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(...);

       mAdapter.setFilterQueryProvider(new FilterQueryProvider(){
                public Cursor runQuery(CharSequence constraint) {
                    if (constraint != null) {
                        return getActivity().getContentResolver().query(
                Phone.CONTENT_URI, new String[]{Phone._ID, Phone.DISPLAY_NAME, Phone.NUMBER, Phone.TYPE}, 
               "REPLACE(" + "REPLACE(" + "REPLACE(" + "REPLACE(" +
                Phone.NUMBER + ",'(',''),')','')" + ",' ',''),'-','')" +
                " LIKE '%" + constraint.toString().replaceAll("\\D", "") + "%'", null, null);
                    }

                    return getActivity().getContentResolver().query(
                Phone.CONTENT_URI, new String[]{Phone._ID, Phone.DISPLAY_NAME, Phone.NUMBER, Phone.TYPE},
                null, null, null);
                }
            });
    mTextView.setAdapter(mAdapter);

这是适配器功能,您可以在其中放置替换非数字代码... 现在,过滤器将只在数字上,没有字符。

我刚刚尝试,它正在工作...... 希望这会对你有所帮助......