問題タブ [textwatcher]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2289 参照

android - Android - TextWatcher は、貼り付けられたテキストの文字ごとに 1 回呼び出されます

TextWatcher を EditText に追加し、 onTextChanged(CharSequence s, int start, int before, int count) メソッドを介してテキストの変更をリッスンしています。10 文字のテキストをこの EditText に貼り付けると、貼り付けたテキストの文字ごとに 1 回、左から右に onTextChanged() が 10 回呼び出されます。10 文字すべてが EditText に貼り付けられた後、onTextChanged() が 1 回だけ呼び出されるようにします。そうでなければ、常に1になる場合、「カウント」パラメーターを使用する意味は何ですか?

0 投票する
3 に答える
17127 参照

android - EditTextで1文字のみを許可し、ユーザーが入力するときに常に上書きします

EditText1文字と1文字(文字/アルファ)のみを受け入れるものを作成する必要があります。また、ユーザーが他の文字を入力した場合は、既存の文字を置き換える必要があります(テキスト入力の上書き方法を1つの許可された記号で上書きするなど)。

  1. プロパティでテキストの最大長を設定する方法を知っています。ただし、1に設定すると、ユーザーが既存の文字を削除する前に他の文字を挿入できなくなります。しかし、手動で削除せずに、既存の文字を新しく入力した文字に自動的に置き換えたいと思います。どうやってするか?

  2. で数字のみを許可するようにプロパティを設定する方法は知っていますが、EditText文字のみを許可する方法がわかりません。したがって、2番目の質問は、EditText?の文字のみを許可する方法です。

現在EditText、次のコードで最大テキストサイズ=2を使用しています。

重要なのは、ユーザーが2番目の文字を入力したときに、最初の文字を削除する必要があるということです。テキストサイズを2にすると、ユーザーは1つの文字を入力した後で別の文字を入力できます。

私はそれがどのように機能するかを本当に理解していませんが、それは理解しています:)。さらに、カーソルをEditText最後の位置に向ける必要がありました。これは、カーソルが常に先頭に移動し、何も入力できなくなるためです。理由もわかりませんでした。

このソリューションの主なポイントは、2文字のサイズEditTextであるということですが、1文字のサイズが必要です。そして、それは文字(chars / alpha)以外のものを入力することを可能にし、私はcharsだけが欲しいです。

sgarmanCharacter.isLetter()functionによって提供されるアドバイスを使用すると、afterTextChangedメソッドは次のようになります。

この場合、使用する必要がないことを発見しましたSelection.setSelection。これで、文字の入力のみを許可するフィルターが追加されました。それは私が望むほとんどの答えです。残っているのは、1シンボルサイズで同じことを行う方法だけEditTextですか?

0 投票する
3 に答える
25682 参照

android - アンドロイドEditText、キーボードtextWatcherの問題

私はAndroidアプリに取り組んでおり、ユーザーが数字を入力できるEditTextを持っています。さまざまな通貨形式(たとえば##、##、###)を使用して数値をフォーマットしたいのですが、その場で、つまりユーザーが各桁を入力したとき(Enterキーが押されたときではない)にフォーマットしたいと思います。グーグルで検索して、最初に有望だと思ったTextWatcherに出くわしましたが、それは絶対的な苦痛であることがわかりました。ソフトキーボードしかないHTCDesire電話でコードをデバッグしています。

ここで、ユーザーが数字(0〜9)、del(バックスペース)キーを押してキーを入力したときにコールバックを取得したいと思います。私のテストから、私はこれらを見つけました(少なくとも私の電話で)

1)editText onKeyListenerは、ユーザーがdelまたはEnterキーを押すと呼び出されます。ユーザーがEnterキーを押すと、onKey関数が1回のEnterに対して2回呼び出されます(これはACTION_UPとACTION_DOWNの場合だと思います)。ユーザーがdelを押すと、onKeyが1回呼び出されます(ACTION_DOWNの場合のみ)。理由はわかりません。ユーザーが数字(0から9)を押しても、onKeyが呼び出されることはありませんが、これも理解できません。

2)TextWatchers 3のコールバック関数は、ユーザーが任意の数字(0〜9)キーを押すたびに呼び出されます(beforeTextChanged、onTextChanged、afterTextChanged)。したがって、TextWatcherとonKeyListenerを一緒に使用することで、必要なすべてのコールバックを取得できると思いました。

今私の質問はこれらです。

1)最初に私のHTCソフトキーボードにキー(下向き矢印の付いたキーボード記号)があり、それをクリックすると、キーボードはコールバックを与えずに辞任します。私はまだ、Androidがユーザーにフィールドの編集を許可し、プログラムに編集を処理(保存)させずに辞任させることを信じることができません。これで、editTextに1つの値が表示され、オブジェクトに別の値が表示されます(Enterキーを押したときにユーザーの編集を保存し、editText値をオブジェクトの値にリセットしてキーボードを押し戻す処理を行っていますが、このキーボードのダウンキーに対する回答がありません) 。

2)次に、ユーザーが新しい桁を入力した後に数値をフォーマットしたいと思います。すでにeditTextに123があり、ユーザーが4を押して入力したとすると、editTextに1,234を表示させます。onTextChanged()とafterTextChanged()で完全な数値を取得し、数値をフォーマットして、これらのコールバックのいずれかでeditTextに戻すことができます。どちらを使うべきですか?ベストプラクティスはどれですか?

3)3番目は最も重大な問題です。アプリの起動時に、現在のオブジェクト値をeditTextに入れます。onResume()に123を置き、ユーザーが数字を入力すると(たとえば、4)1234にします。しかし、onTextChangedコールバックでは、取得するのは4123です。もう1つのキー(たとえば、5)を押すと、 45123を取得します。したがって、ユーザー入力の場合、editTextカーソルはテキストの終わりを指しています。ただし、値を手動で設定すると、editTextカーソルが更新されていないように見えます。textWatcherコールバックで何かをしなければならないと思いますが、何をすべきかわかりません。

以下にコードを投稿しています。

大きな問題だとは思いますが、同じ問題に2日間取り組んでいます。私はAndroidを初めて使用しますが、テキストエディットデータをその場で処理する簡単な方法がないとはまだ信じられません(iPhoneでも同じことを簡単に実行できます)。皆さんありがとう

編集:入力フィルターを使用した後

アプリが起動すると、editTextに1,234を追加します

次に、ユーザーがeditTextをクリックすると、キーボードがポップアップし、ユーザーが数字の6を入力したと言います。

私が得ている:61234私が欲しい:12346

0 投票する
13 に答える
85965 参照

android - 複数のEditTextに単一のTextWatcherを使用するには?

ビュー レイアウトに3 つのEditTextウィジェットがあります。TextWatcher3つすべてにシングルを使用する方法はありEditTextsますか?

0 投票する
1 に答える
741 参照

android - TextWatcherは、エミュレーター/電話での動作が異なります

私はこのようなEditTextにTextWatcherを持っています

(ここで、etSearchは私のEdittextetSearch.addTextChangedListener(searchWatcher)です。)

2.1-update1を実行しているSonyEricssonXperiaと、2.1-update1を実行しているAVDがあります。エミュレーターで、EditTextをクリックし、ソフトキーボードを使用してabcと入力し、delボタンを1回押します。電話で、EditTextをタッチし、ソフトキーボードでabcと入力して、delを1回押します。電話で、私はこれを受け取ります:

エミュレーターでは、次のようになります。

なぜそれらは同じではないのですか?どちらが正しい動作ですか?

0 投票する
5 に答える
5978 参照

android - フィルタリング可能なListViewで「結果なし」を表示するには?

私はListViewとを持っていEditTextます。コンテンツをフィルタリングするために実装addTextChangedListenerします。EditTextListView

そして、次のTextWatcherとおりです。

調子:

  1. に 10 個のアイテムがありListViewます。

質問:

  1. 最初の文字を最初に入力すると、返されたフィルター結果の数ではなく、wで (初期値として) がwatcherAdapter.getCount()返されるのはなぜですか? )は、表示された結果のクリックが遅いようです。10ListViewatcherAdapter.getCount(ListView
  2. に入力したときに一致結果がない場合に表示"No Result"するにはどうすればよいですか?ListViewEditText
0 投票する
13 に答える
57227 参照

android - addTextChangedListener で追加されたすべてのリスナーを削除する方法

ListView各行にEditTextコントロールがある場所があります。TextChangedListener各行に a を追加したい。1つは、どの行にEditTextあったかを示す余分なデータを含みます。問題は、getView呼び出されると複数TextWatchersが追加されることです。はconvertViewすでにTextWatcher(および別の行を指すもの) を持っているためです。

MyTextWatcherを実装する私のクラスですTextWatcher。テキストイベントを処理します。CurrentQuestion は、どの行に作用しているかを教えてくれます。ボックスに入力すると; の複数のインスタンスTextWatcherが呼び出されます。

TextWatchers新しいものを追加する前に削除する方法はありますか? メソッドが表示されますremoveTextChangedListenerが、特定のメソッドを渡す必要があり、既に存在するメソッドTextWatcherへのポインターを取得する方法がわかりません。TextWatcher

0 投票する
5 に答える
13706 参照

android - TextWatcherリスナーをコールバックせずにDataChangeでTextViewテキストを変更する方法

検討:

にaを追加し、TextWatcherこれにTextView文字を追加したいTextView場合、ユーザーが文字を書き込むたびに、これはTextWatcherリスナーを呼び出し続けます。など、リスナーを再度StackOverFlow error呼び出さずにテキストを追加するにはどうすればよいですか?TextWatcher

0 投票する
2 に答える
8910 参照

android - TextChangedListenerを削除してから、再度追加します

そのため、Android用のTextWatcherを実装しようとして、EditTextウィジェットのテキストを通貨形式の文字列に変換したいので、TextChangedListenerが複数回呼び出されたり、無限ループに入ったりするといういくつかの問題が発生しました。

これを回避するために私がしたことは、独自のカスタムTextWatcherを作成し、afterTextChangedイベントで次のようなことをしたことです。

だから私の質問は、これを行うためのより良い方法はありますか?編集が行われる場所と結果のフォーマットされた文字列を保持するための1つのEditTextウィジェットが必要です。

また、このようなTextChangedListenerを削除してから追加することに関して、実際に他の問題がありますか?

前もって感謝します

0 投票する
1 に答える
512 参照

android - Desire Z with 2.3.3: TextWatcher が動作しない -> ストック キーボードのバグ?

Desire Z (ヨーロッパ版) の 2.3.3 リリースで、非常に厄介なバグに遭遇したと思います。HTC のストック キーボードを使用すると、TextWatcher が機能しなくなりました。Nexus One、Samsung Galaxy S、さまざまなエミュレーター バージョン、Motorola Milestone などの他のデバイスでも動作します。さらに、別のキーボードを使用するとすぐに機能が回復します。

使用法(簡単に)は次のようになります。

誰かが同じ (不快な) 動作を経験していますか? また、別のキーボードのインストールを伴わない回避策を誰かが持っていますか?

みんなありがとう