web-dev-qa-db-ja.com

プログラムによるAutoCompleteTextViewアイテムの選択

アイテムのクリック時に非同期タスクを呼び出すsqliteデータベースの都市で満たされたオートコンプリートテキストビューがあります。最近、gpsを使用して現在地を検出するオプションを追加したので、問題は都市(ベイルートなど)を検出できることです。 autocompletetextviewのテキストを設定しますが、ドロップダウンフィルターが開き、ベイルートが表示されます(これは正しいです)が、リスト項目をクリックしてリスナーを呼び出す必要があります。プログラムでこれを行う方法

方法:
-アクティビティを入力(完了)
-位置を検出(完了)
-テキストビューのテキストを設定(完了)
-textviewドロップダウンリストを表示(完了)
-返されるアイテムを選択します。返されるのは1つの都市のみです(完了していません)。

14
Hussein Yassine

私はAndroidソースコード:

fun AutoCompleteTextView.selectItem(text: String, position: Int = 0) {
  this.setText(text)
  this.showDropDown()
  this.setSelection(position)
  this.listSelection = position
  this.performCompletion()
}
2
Nilton Vasques
autoComplete.setListSelection(position);
1
Robson Chico

AutoCompleteTextviewのsetText()の後に以下を追加してみてください:-

autoCompleteTV.setSelection(position);

更新:

これは、ドロップダウン機能があるSpinnerおよびAutoCompleteTextViewで機能しますが、EditTextでは機能しません。

ここで、このリンクでAbsSpinnerのドキュメントを確認できます。 https://developer.Android.com/reference/Android/widget/AbsSpinner.html#setSelection(int)

1
Nitin Patel

問題は、テキストを設定していて、AutoCompleteTextViewがそのテキストに一致する単語のみを表示していることです。これを解決する洗練されていない方法は、高いしきい値(少なくとも都市名の最大長)を設定して、強制的にAndroid=リストのすべての値を表示することです(このしきい値フィールドが類似性を検索するために必要な文字数です)。

0
David M.R.