0

国のリストを表示するリストビューと上部の検索ボックスを使用したアクティビティがあります。

入力テキストに基づいて Listview をフィルタリングするだけです。

Filter を使用すると正常に動作します。ただし、入力された文字列は、開始または途中のテキストの任意の一致と一致しますが、文字列の開始のみを一致させる必要があります。

たとえば、ユーザーが「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
}

現在使用しているアルゴリズムは、contains を使用しています。

于 2013-07-12T11:18:10.257 に答える