私はオートコンプリートテキストビューを提供してユーザに提案を表示しています。ユーザが選択したアイテムに基づいて、アイテムのIDを取得してデータベース側で使用しています。私の問題は、オートコンプリートのテキストビューからのみ選択するようにユーザーを制限することです(つまり、ユーザーは自分のテキストを入力しないでください)。これはクライアントの要件です。これを行う方法?Android:オートコンプリートから選択するようにユーザに制限する
答えて
ここでは非常に簡単なソリューションです:
あなたがでsetOnItemClickListener
を設定することにより、選択した値を格納する変数を作成することができますAutoCompleteTextView
ユーザーがTextWatcher
を追加してフィールドに入力するたびに、その値がnull
になります。最後に、変数がnullでないことを確認してから続行してください。
String my_var; //keep track!
AutoCompleteTextView tv = (AutoCompleteTextView) layout.findViewById(R.id.tv);
tv.setAdapter(my_adapter);
tv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
my_var = my_adapter.getItem(position).toString();
}
});
/**
* Unset the var whenever the user types. Validation will
* then fail. This is how we enforce selecting from the list.
*/
tv.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
my_var = null;
}
@Override
public void afterTextChanged(Editable s) {}
});
しかし、ユーザがリストに表示される値を入力した場合、 'my_var'はnullにはなりません! – dvrm
@dvrm次に、ユーザーが入力したテキストをアダプターで検索し、各onTextChangedのアダプターから値を選択する必要があります。したがって、ユーザーがactvで 'name'と入力すると、 'n'、 'na'、 'nam'、 'name'を検索し、一致するとその値を選択します。この方法では、テキストが一致する限り、リストの項目はクリックされたかどうかにかかわらず選択されます。 – regretoverflow
マインドの素晴らしいアプリケーションです。ありがとう。 –
[OK]私はあなたの入力を提案ボックスにリストされている項目のリストに含まれているテキストに制限したいとします。例えば
あなたが持っている場合:
- 一つ
- 二
- 三
editBox = (TextView) findViewById(R.id.editBox);
editBox.setFilters(getFilters());
editBox.addTextChangedListener(this);
editBox.setOnFocusChangeListener(this);
:あなたはのTextViewのsetFilters方法を利用することができ、これを達成するために
新しい文字が入力されたときにプラスを押してフィルタを更新します。ここで
は、私がプロジェクトで使用している小数フィルタの例である:
protected InputFilter[] getFilters()
{
InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter()
{
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend)
{
// limit input to digits and decimal/thousand separator only
// in case thousand separator is pressed, change it to decimal
// separator instead
String output = "";
if (number.isFocused())
{
for (int i = start; i < end; i++)
{
char c = source.charAt(i);
if (isDecimalOrThousandSeparator(c))
{
output = output + Character.toString(decimalSeparator);
}
else if (Character.isDigit(c))
{
output = output + Character.toString(c);
}
}
return output == "" ? null : output;
}
return null;
}
};
return filters;
}
私が取り組んでいるプロジェクトにはこのような要件が必要でしたが、私は必要なものを実装した方法を皆さんに教えてもらいます。
オートコンプリートのテキストビューのフォーカス変更リスナーを追加し、フォーカスがオートコンプリートからフォーカスを変更したときにチェックし、状況を直感的に処理しました。
autoTextViewCountry.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
if(!b) {
// on focus off
String str = autoTextViewCountry.getText().toString();
ListAdapter listAdapter = autoTextViewCountry.getAdapter();
for(int i = 0; i < listAdapter.getCount(); i++) {
String temp = listAdapter.getItem(i).toString();
if(str.compareTo(temp) == 0) {
return;
}
}
autoTextViewCountry.setText("");
}
}
});
だから私の実装は次のとおりです。入力したテキストは、アレイアダプタに存在しないならば、焦点のテキストビューを空に変更し、後で言うの登録の次のステージに進むときに、このテキストビューかどうかを確認空であるかどうか。
このアプローチが誰かに役立つことを願っています。
ハッピーコーディング。
NiceAutoCompleteTextViewはあなたの選択がisSelectionFromPopup()
- 1. Mysql最初に選択してから制限する
- 2. JQueryオートコンプリート:リストから選択を強制する方法(キーボード)
- 3. ユーザがダイアログでオプションを選択するように強制する
- 4. 単一選択によるユーザ選択(制限属性が機能していません)
- 5. オートコンプリートから強制的にユーザーを選択
- 6. 制限の選択
- 7. 制限を基にした選択列によるnhibernateグループ
- 8. データベースから選択してソフトウェアで制限するか、データベース(mysql)で制限する
- 9. データベースからユーザを選択
- 10. NLTKのWordNet選択制限
- 11. 制限、選択UNIONは列
- 12. Spring Security +ユーザ名に基づいてユーザを制限する
- 13. 1日に1回だけ遊ぶようにユーザを制限する
- 14. jqueryオートコンプリートでユーザーが2を選択できる提案を制限する方法はありますか?
- 15. Android開発中:アプリケーションを実行して使用するようにユーザを制限する
- 16. Android - オートコンプリート・テキストビューから選択したアイテムを特定
- 17. cvs login issue - cvsログインからユーザを制限する方法
- 18. ListPreferenceからどのように選択するのですか?
- 19. ユーザのCPU数を制限する
- 20. PHPでフォルダアクセスのユーザを制限する
- 21. ユーザーがテーブルから選択できるようにする
- 22. iPhone - MPMusicPlayerController - 選択する曲の数に制限がありますか
- 23. jQueryオートコンプリートをdivに選択します
- 24. オートコンプリート入力選択から選択したオプションを表示しようとしています
- 25. WebViewからAndroidブラウザにリダイレクトするURLを選択するにはどうすればよいですか?
- 26. ユーザが選択ボックスから選択したときにjqGridの編集フォームに値をロードする方法
- 27. これらの制限(ビジネス制限)を適用するにはどうすればよいですか?
- 28. コンボボックスのオートコンプリートの制限
- 29. Rubyでは、コントローラのメソッドを特定のユーザに制限するにはどうしたらいいですか?
- 30. あるテーブルから他のテーブルにないユーザを選択する
ご質問は明確ではない呼び出すことによって、ドロップダウン、ポップアップから作られたかどうかをチェックする機能を提供します。どちらの選択を制限したいのですか/ユーザーはどこで選択できますか? – stoilkov
あなたはテキストビューを編集するようにユーザーを制限しようとしていますか?彼はオートコンプリート選択項目の中から1つだけを選択できますか? – Drejc
@Drejcはいそれは私が必要としたものです –