ホーム > android, 作業メモ > android : EditTextにonChangeイベントを追加する

android : EditTextにonChangeイベントを追加する

テキスト入力部の文字数をリアルタイムで表示したい!…と思って調べてみた。
当初、他の処理系の癖かonChangeイベントはー?とか探してしまったのだが、どうやらTextChangedイベントを利用する模様。

Activity内でまずaddTextChangedListenerする。Listenerは、TextWatcherインタフェースをimplementsしてないとダメ。もちろんActivityにimplementsして、thisでもOK。

((EditText) findViewById(R.id.edittext)).addTextChangedListener(new onTextChanged());

で、TextWatcherをimplementsしたクラスを用意する。クラスは必ずメソッドとして

  • afterTextChanged
  • beforeTextChanged
  • onTextChanged

を実装する必要がある。
試しにEditTextの長さを別のTextViewに表示させてみた。

	private class onTextChange implements TextWatcher{
		public void afterTextChanged(Editable arg0) {
		}

		public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
		}

		public void onTextChanged(CharSequence s, int start, int before, int count) {
			int txtLength = s.length();
			((TextView) findViewById(targetId)).setText(Integer.toString(txtLength) + "/50");
			int txtCol = Color.GREEN;
			if (txtLength>50) txtCol = Color.YELLOW;
			if (txtLength>70) txtCol = Color.RED;
			((TextView) findViewById(targetId)).setTextColor(txtCol);
		}
	}

無事に文字数は表示された模様…Byte数表示にするにはどうすりゃいいんだろ。

カテゴリー: android, 作業メモ タグ:
  1. コメントはまだありません。
  1. トラックバックはまだありません。