国のリストを表示するリストビューと上部の検索ボックスを使用したアクティビティがあります。
入力テキストに基づいて 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
}
});