AutoCompleteTextViewで読みがな一致させる

EditTextでサジェストのようなものを出したいと思って調べていると、AutoCompleteTextViewというものを発見。
EditTextを継承しているのに、名前はAutoCompleteTextViewなのが素直じゃない。)

ただ、日本語入力の場合はそのまま使うとちょっと不便な印象でした。
たとえば、”林檎” が候補として表示されるには、”林” という入力が必要ですが、 本当は”り” で ”林檎” が出るような動作が使いやすいと思います。
そこで、読みがな情報を保持して前方一致検索をするようにしてみます。

まずは、単語と読みがなを扱うクラスを作って

リスト表示ではおなじみのAdapterも実装。
ハイライトしている部分が、オートコンプリートに表示するかどうかの判定部分で、今回は読みと単語それぞれに対して前方一致で比較。
32行目の R.layout.autocomplete_item はTextViewを配置したレイアウトです。レイアウトを気にしないならAndroid.R.layout.simple_list_item_1でいいはず。

AutoCompleteTextViewに上記のAdapterをセット。データには適当に果物を詰めました。
下の例では、ActivityのonCreate()内で処理してます。

これで、”り”でも”林”でも林檎がひっかかるようになりました。便利!
ただし、この実装では”ふ”で葡萄は引っかからなかったり、QWERTYキー入力だと子音を入力した状態(例:”りn”)になると候補が消えてしまったりします。
比較の部分を充実させれば日本語オートコンプリートの精度は上がっていくでしょうが、そこそこの労力で便利になるよね、ということで。

fig1
fig3
fig2

リファレンス
AutoCompleteTextView | Android Developers

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*
*
Website