アイテムのクリック時に非同期タスクを呼び出すsqliteデータベースの都市で満たされたオートコンプリートテキストビューがあります。最近、gpsを使用して現在地を検出するオプションを追加したので、問題は都市(ベイルートなど)を検出できることです。 autocompletetextviewのテキストを設定しますが、ドロップダウンフィルターが開き、ベイルートが表示されます(これは正しいです)が、リスト項目をクリックしてリスナーを呼び出す必要があります。プログラムでこれを行う方法
方法:
-アクティビティを入力(完了)
-位置を検出(完了)
-テキストビューのテキストを設定(完了)
-textviewドロップダウンリストを表示(完了)
-返されるアイテムを選択します。返されるのは1つの都市のみです(完了していません)。
私はAndroidソースコード:
fun AutoCompleteTextView.selectItem(text: String, position: Int = 0) {
this.setText(text)
this.showDropDown()
this.setSelection(position)
this.listSelection = position
this.performCompletion()
}
autoComplete.setListSelection(position);
AutoCompleteTextviewのsetText()の後に以下を追加してみてください:-
autoCompleteTV.setSelection(position);
更新:
これは、ドロップダウン機能があるSpinner
およびAutoCompleteTextView
で機能しますが、EditText
では機能しません。
ここで、このリンクでAbsSpinner
のドキュメントを確認できます。 https://developer.Android.com/reference/Android/widget/AbsSpinner.html#setSelection(int)
問題は、テキストを設定していて、AutoCompleteTextView
がそのテキストに一致する単語のみを表示していることです。これを解決する洗練されていない方法は、高いしきい値(少なくとも都市名の最大長)を設定して、強制的にAndroid=リストのすべての値を表示することです(このしきい値フィールドが類似性を検索するために必要な文字数です)。