0

我有一个列表视图活动,在顶部显示国家列表和搜索框。

我只需要根据输入的文本过滤 Listview。

使用过滤器它工作正常。除了它将输入的字符串与文本上的任何匹配项匹配,无论是开始还是中间,而我只需要匹配字符串的开头。

例如,如果用户键入“f”,它会显示:

布基纳法索 福克兰群岛 法罗群岛 斐济 芬兰 法国

现在,“布基纳法索”不以 F 开头,它只是显示,因为它包含 F。

我怎么能改变过滤器只寻找字符串的开头。

inputSearch = (EditText) findViewById(R.id.inputSearch);
        inputSearch.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
                // When user changed the Text
                CountryListViewActivity.this.adapter2.getFilter().filter(cs);  
            }

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

            }

            @Override
            public void afterTextChanged(Editable arg0) {
                // TODO Auto-generated method stub                          
            }
        });
4

1 回答 1

1

在您的 listadapters 过滤器中,使用类似的方法实现过滤器方法的匹配部分

if (placeName.toLowerCase().startsWith(filterValue.toLowerCase()) {
    // add it to the result list
}

您正在使用的当前算法正在使用包含。

于 2013-07-12T11:18:10.257 回答